嵌套资源链接

时间:2014-04-03 07:44:36

标签: ruby-on-rails ruby-on-rails-4 routing nested-resources

我有一个带有子类别的类别,子类别有帖子。我想将其链接如下:

/categoryname/subcategoryname/post_id/postname

我已经尝试过把它放在我的路线中了:

  resources :categories do
    resources :subcategories do
      resources :posts
    end
  end

但是,只要我想通过/categoryname/subcategory/

为我的子类别(link_to(subcat.name, category_subcategory_path))创建链接

我明白了:

No route matches {:controller=>"subcategories", :action=>"show"} missing required keys: [:category_id, :id]

如何进行此操作以获得所需的链接设置?

提前致谢,

1 个答案:

答案 0 :(得分:1)

<强>蛞蝓

首先,如果您希望使用slugged routes,那么您最好看一下宝石,包括friendly_idslugalicious - 基本上允许您管理& #34;蛞蝓&#34;对于您的模型 - 以URL编码格式保存标题或其他属性


<强>路径

其次,我认为您将通过提供值来解决您的问题,而不是使用路径助手。我会这样做:

link_to subcat.name, category_subcategory_path(category.id , subcat.id)

当您使用path helper时,它只关心您发送的params。您正在使用的路径助手要求您设置category_idsubcategory_id参数 - 您应将其传递给路径助手,如上所示

这将使用id创建路径 - 如果您想使用slugs,则需要使用上述宝石之一({建议使用{3}}来设置应用程序中的slugs