11

我是 Rails 的新手。

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

我在模型中定义的帖子和评论之间存在嵌套的 have_many 关系,并且routes.rbpost_comments GET /posts/:post_id/sensors(.:format) comments#index我执行 rake 路由时出现。

我该怎么做?

4

4 回答 4

12

如果您定义了嵌套资源(当然还有您的模型CommentPost相关联的)

resources :posts do
 resources :comments
end

您可以链接评论如下

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

在过去的博客文章中写了一个完整的嵌套资源示例

于 2013-04-29T11:33:55.987 回答
8

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

post_comments_url(@post,comment)

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

它使用 . 相反/像“post/34/comments.2”一样,我使用单数形式修复了它:

post_comment_url(@post,comment)

感谢您的帮助!

于 2013-04-30T07:58:39.707 回答
1

从第一列获取方法名

   rake routes

并相应地传递 ID。当然也可以在方法名后面加上_pathir_url 要了解更多信息,请访问Rails 指南

于 2013-04-29T11:52:28.613 回答
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 routes 的用于路由调试的工具是:https ://github.com/schneems/sextant

于 2013-04-29T11:42:56.897 回答