【发布时间】:2010-09-09 00:47:30
【问题描述】:
我正在尝试编写一个路由来捕获您的普通博客中的帖子和 cmets 之间的一对多关系
我目前拥有的是一个 post.rb
class Post < ActiveRecord::Base
has_many :comments
end
后跟一个comment.rb(在所有其他数据库设置中,包括post_id:integer 用于评论)
class Comment < ActiveRecord::Base
belongs_to :post
end
在我尝试使用的路线中
resources :posts do
resources :comments
end
但我没有任何运气 - Rails 3 专家有什么帮助吗?
编辑
当我通过这个网址点击我的帖子控制器的“显示”操作时
我收到路由错误
No route matches {:controller=>"comments", :action=>"create"}
这是因为我的帖子显示模板中有我的 cmets 表单
<% 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 %>
我是否需要更改我的表单,因为在此更改路线之前,当我执行简单视图源时,操作指向 /cmets/{id}
编辑#2
我确实注意到,在我将路线更改为如下所示后
resources :comments
resources :posts
resources :posts do
resources :comments
end
除了我创建的评论不知道 post_id 之外,我得到了一切正常(在 MySQL 中,评论是持久的,但它不知道它所属的帖子)
这可能是我的表格吗?
【问题讨论】:
-
这是来自 ROR 指南教程吗?
-
示例是的 - 但我正在尝试使用 3.0 框架执行此操作,并在我的新 rails 应用程序的 cmets 中找到了这条路线“示例”(但它不起作用)
-
您的路径在视图中看起来如何?
-
看来你有basic routing for nested resources的权利。您能否详细说明“我没有运气”?
标签: ruby-on-rails routing