Ruby on rails rails 3中的简单帖子/评论路线

Ruby on rails rails 3中的简单帖子/评论路线,ruby-on-rails,routing,Ruby On Rails,Routing,我试图写一条路线,捕捉你的普通博客中帖子和评论之间的一对多关系 我现在有一个post.rb class Post < ActiveRecord::Base has_many :comments end 但是我一点运气都没有——rails 3专家有什么帮助吗 编辑 当我通过这个url点击我的post控制器的“显示”操作时 我得到一个路由错误 No route matches {:controller=>"comments", :action=>"create"} 这是因

我试图写一条路线,捕捉你的普通博客中帖子和评论之间的一对多关系

我现在有一个post.rb

class Post < ActiveRecord::Base
  has_many :comments
end
但是我一点运气都没有——rails 3专家有什么帮助吗

编辑

当我通过这个url点击我的post控制器的“显示”操作时

我得到一个路由错误

No route matches {:controller=>"comments", :action=>"create"}
这是因为我的评论表单在我的帖子的展示模板中

<% form_for Comment.new do |f| %>
<p>
  <%= f.label :body, "new comment" %><br>
  <%= f.text_area :body %>
</p>
<p><%= f.submit "add comment" %></p>
<% end %>
除了我创建的注释不知道post_id(在MySQL中,注释被持久化,但它不知道它所属的post_)之外,我的一切都正常工作


那么这可能是我的表单吗?

您评论的资源被定义为嵌套资源而不是独立资源

因此,生成的路径也需要posts信息。因此,将语句的形式_更改为

[@post,Comment.new]do|f的表格|

,请阅读本文以了解更多信息


这(使用非常旧版本的rails)

您的注释资源被定义为嵌套资源,而不是独立资源

因此,生成的路径也需要posts信息。因此,将语句的形式_更改为

[@post,Comment.new]do|f的表格|

,请阅读本文以了解更多信息


这(使用非常旧版本的rails)

这是ROR指南教程中的吗?示例是的-但我正试图用3.0框架实现这一点,并在我的新rails应用程序的评论中找到了这条路线的“示例”(但它不起作用)。您的路径在视图中是什么样子的?看起来您是对的。请你详细说明一下“我一点运气都没有”好吗?这是ROR指南教程中的吗?示例是的,但我正在尝试使用3.0框架来实现这一点,并在我的新rails应用程序的评论中找到了这条路线的“示例”(但它不起作用)。您的路径在视图中是什么样子的?看起来您是对的。请您详细说明一下“我一点运气都没有”好吗?这在show模板中修复了我的表单,但是像我在上面的示例中那样定义所有3个资源是否“有效”?如果不是的话,你会建议什么呢?第一种方法是rails方法,但有时它会因为嵌套资源而变得相当复杂,所以人们会转而使用你所做的。因此,在您知道如何更好地使用rails之前,无需再次定义“resources:posts”。使用#1嵌套资源方式,可以更轻松地管理模型内的关联和授权。但在第二天,你就必须做到这一点。手动。因此,您可以选择在show模板中修复我的表单,但是像我在上面的示例中那样定义所有3个资源是否“有效”?如果不是的话,你会建议什么呢?第一种方法是rails方法,但有时它会因为嵌套资源而变得相当复杂,所以人们会转而使用你所做的。因此,在您知道如何更好地使用rails之前,无需再次定义“resources:posts”。使用#1嵌套资源方式,可以更轻松地管理模型内的关联和授权。但在第二天,你就必须做到这一点。手动。所以你挑吧
No route matches {:controller=>"comments", :action=>"create"}
<% form_for Comment.new do |f| %>
<p>
  <%= f.label :body, "new comment" %><br>
  <%= f.text_area :body %>
</p>
<p><%= f.submit "add comment" %></p>
<% end %>
 resources :comments
  resources :posts

  resources :posts do
    resources :comments
  end