如何将Link_to与嵌套资源一起使用

时间:2013-04-29 11:31:04

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

我是Rails的新手。

我创建了一个Web应用程序,我可以通过/posts/123/comments//posts/123/comments/new访问,但我不知道如何在索引视图中使用link_to来显示具体的注释,当我尝试链接它,出现“无路线”或“未定义的符号”。

我在模型中定义的帖子和评论与routes.rbpost_comments GET /posts/:post_id/sensors(.:format) comments#index在我执

我怎么做?

4 个答案:

答案 0 :(得分:12)

如果您已定义嵌套资源(当然您的模型CommentPost已关联)

resources :posts do
 resources :comments
end

您可以将评论链接为以下

<!-- /posts/:post_id/comments/:id -->
<%= link_to 'Show', [@comment.post, @comment] %>

我写过full example of nested resources in a past blog post

答案 1 :(得分:7)

在尝试了所有的答案后,它并没有完全奏效,但我找到了解决问题的方法。 在第一时间,我使用了

  

post_comments_url(@后,评论)

其中comment是@ post.each中的项目。

它会产生一条“奇怪”的路线。相反/喜欢“post / 34 / comments.2”,我使用单数形式修复它:

  

post_comment_url(@ post,comment)

感谢您的帮助!

答案 2 :(得分:1)

的第一列获取方法名称
   rake routes

并相应地传递ids。当然,方法名称后缀为_path ir _url 要了解更多信息,请访问Rails guide

答案 3 :(得分:0)

除了toch的答案,你可以在Rails控制台的帮助下调试你的link_to调用。

为此,您需要在控制台中加载视图助手:

irb(main):001:0> include ActionView::Helpers::UrlHelper
=> Object
irb(main):002:0> helper.link_to "posts", app.posts_path
=> "<a href=\"/posts\">foo</a>"

另一个工具,类似于路由调试的Rake路由:https://github.com/schneems/sextant