嵌套资源的命名路由

时间:2016-07-27 12:48:33

标签: ruby-on-rails

我实际上无法找到相关文档,所以如果你有一个方便的链接,也会非常感激。

所以我有:

resources :users do 
  resources :posts, only: [:index, :create, :show] 
  end

我想通过命名路由访问posts的索引操作。我试过了这个问题:<%= link_to 'User Posts', user_posts_path %>但它说缺少user_id。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

使用嵌套资源路由时,您需要提供父资源的引用ID。在您的案例资源user中。你可以这样做:user_posts_path(user)。生成的路线类似于:/users/1/posts,其中1是:user_id,或者如果您想要一条路线:/users/posts,您应该这样做:

resources :users do
  collection do
    resources :posts
  end
end

查找完整的routing documentation here

答案 1 :(得分:0)

它要求user_id因为您将用户定义为资源,而是将其更改为命名空间:

namespace :users do 
  resources :posts, only: [:index, :create, :show] 
end