Rails - link_to,路由和嵌套资源

时间:2009-10-10 13:49:24

标签: ruby-on-rails routes nested-resources

由于我对嵌套资源的理解,在边缘Rails上,不应该

link_to 'User posts', @user.posts

指向

/users/:id/posts

routes.rb文件包含

map.resources :users, :has_many => :posts

如果这不是默认行为,可以通过其他方式完成吗?

4 个答案:

答案 0 :(得分:54)

答案 1 :(得分:16)

这应该有效:

 
 link_to "User Posts", user_posts_path(@user)

了解更多详情,请访问:

http://guides.rubyonrails.org/routing.html

答案 2 :(得分:2)

link_to使用url_for使用polymorphic_url

polymorphic_url

因此,正如其他人所说,你应该使用:

link_to 'User Posts', [@user, :posts]

路径为:

user_posts_path(@user)
^^^^ ^^^^^      ^^^^^
1    2          3
  1. @user类,因为它是有效记录
  2. 转换为字符串,因为符号
  3. 添加为调用参数,因为有效记录
  4. 构建好帮手方法。

答案 3 :(得分:1)

这是如何链接到最新Rails中的嵌套资源:

  

link_to'Destroy Comment',post_comment_path(comment.post,comment)

注意:这是部分的,因此没有@