Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-友好ID和条件_Ruby On Rails_Routes_Friendly Id - Fatal编程技术网

Ruby on rails Rails-友好ID和条件

Ruby on rails Rails-友好ID和条件,ruby-on-rails,routes,friendly-id,Ruby On Rails,Routes,Friendly Id,我有一个模型帖子,它属于使用友好id的类别。现在我想列出一个类别中的所有帖子。要获取索引页,我想使用如下链接:,为此,我选择了以下路径: match 'posts/category/:category/' => 'posts#index' 在我的岗位控制员中,我得到: def index if params[:category] @posts = Post.all(:joins => :category, :conditions => {"categories.c

我有一个模型帖子,它属于使用友好id的类别。现在我想列出一个类别中的所有帖子。要获取索引页,我想使用如下链接:,为此,我选择了以下路径:

match 'posts/category/:category/' => 'posts#index'
在我的岗位控制员中,我得到:

def index
  if params[:category]
    @posts = Post.all(:joins => :category, :conditions => {"categories.cached_slug" => params[:category]})
  else
    @posts = Post.all.reverse
  end
...
它的工作原理应该是这样的,但我认为这不是一种轻松的方式


有没有更好的方法来实现这一点?谢谢你的帮助

FriendlyId增加了使用slug对模型进行查找的能力,并且足够聪明,可以首先检查缓存的\u slug列

通过首先对类别模型执行查找,然后获取所有帖子,可以获得相同的结果

这假设有一个has_many并且属于和引用ID列或HABTM的关联

def index
  if params[:category]
    @posts = Category.find(params[:category]).posts
  else
    @posts = Post.all.reverse
  end
...
由于传递的是一个category参数,因此通过category模型引用它是有意义的

-更多信息添加-

另外:历史发现仍然有效。。 因此,如果您通过重命名一个类别生成了一个新的slug,那么如果您避免使用404,那么旧的url将正常运行