我正在尝试编写一条路线来捕捉普通博客中帖子和评论之间的一对多关系
我目前所拥有的是post.rb
class Post < ActiveRecord::Base
has_many :comments
end
后跟一个comment.rb(在所有其他数据库设置中,包括post_id:整数用于评论)
class Comment < ActiveRecord::Base
belongs_to :post
end
在我尝试使用的路线中
resources :posts do
resources :comments
end
但是我没有运气 - 来自rails 3专家的任何帮助?
修改
当我通过此网址点击我的帖子控制器的“show”动作时
我收到路由错误
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 %>
我是否需要更改表单,因为在对路径进行更改之前,我执行了一个简单的查看源,该操作指向/ comments / {id}
编辑#2
我确实注意到我将路线改为看起来像这样
resources :comments
resources :posts
resources :posts do
resources :comments
end
我得到了一切正常工作,除了我创建的评论不知道post_id(在MySQL中,评论是持久的,但它不知道帖子属于哪个)
那么这可能是我的形式吗?
答案 0 :(得分:2)
您的评论资源被定义为嵌套资源,而不是独立资源,
因此生成的路径也需要帖子信息。所以将form_for语句更改为
form_for [@ post,Comment.new] do | f |
http://guides.rubyonrails.org/routing.html,请阅读此内容以了解更多
和这个http://railscasts.com/episodes/139-nested-resources(使用非常旧版本的rails)