2010-09-09 70 views
0

我想写捕捉你的平均博客文章和评论之间的一个一对多关系的路线简单的帖子/评论航线3

什么我目前是一个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专家的任何帮助?

编辑

当我通过这个网址

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 %> 

我需要改变我的方式,因为这种改变的路线前当我做的动作指向到/评论/ {ID}

编辑#2

一个简单的查看源代码我也注意到,当我改变了我的路线是这样的

resources :comments 
    resources :posts 

    resources :posts do 
    resources :comments 
    end 

我得到的一切,除了我创建的评论不知道POST_ID工作(在MySQL中COMM ent是持续的,但它不知道它所属的帖子)

这可能是我的形式吗?

+0

这是从ROR指导教程? – Kevin 2010-09-09 00:49:15

+0

这个例子是 - 但我试图用3.0框架做到这一点,并在我的新rails应用的评论中发现了这个路由“示例”(但它不起作用) – 2010-09-09 01:05:38

+0

你的路径在视图中看起来如何? – 2010-09-09 01:11:35

回答

2

你对此有何评论资源被定义为一个嵌套的资源不是作为独立的资源,

这样生成的路径所需要的岗位信息,以及。因此将form_for语句更改为

form_for [@ post,Comment.new] do | f |

http://guides.rubyonrails.org/routing.html,阅读理解更

http://railscasts.com/episodes/139-nested-resources(使用很老版本的轨道)

+0

这固定了我的表单在展示模板中,但它是“有效”的所有3资源定义为我在上面的例子吗?如果不是,你会建议什么? – 2010-09-09 01:32:19

+0

第一种方式是导轨方式,但有时它的嵌套资源会变得相当复杂,所以人们会转向你所做的。所以直到你知道更好地使用导轨的方式。 – 2010-09-09 03:09:34

+0

,你不需要再次定义“resources:posts”。通过#1嵌套资源方式,更容易管理模型内的关联和授权。但在#2你会有管理。手动。所以请选择 – 2010-09-09 03:11:33