简单的帖子/评论路由轨道3

时间:2010-09-09 00:47:31

标签: ruby-on-rails routing

我正在尝试编写一条路线来捕捉普通博客中帖子和评论之间的一对多关系

我目前所拥有的是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”动作时

http://localhost:3000/posts/3

我收到路由错误

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中,评论是持久的,但它不知道帖子属于哪个)

那么这可能是我的形式吗?

1 个答案:

答案 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)