我试图在一段时间后回到轨道中,并且很难以嵌套的方式连接两个简单的脚手架构建的资源。父控制器工作,但孩子通常会爆炸。我一直在寻找这个问题的答案,但没有成功。
对于属于产品父级的特定评论子项,请路由“/ products / 1 / comments / 1”
错误消息
找不到没有ID的评论 app / controllers / comments_controller.rb:25:在'show'
参数:
{ “PRODUCT_ID”=> “中1”, “ID”=> “中1”}
以下是comments_controller“show”
中的相关代码def show
@product = Product.find(params[:product_id])
@comment = @product.comments.find(params[:comment_id])
(如果我将:comment_id更改为:id,则新错误为:)
无法找到ID = 1的评论[WHERE(
comments
。product_id = 1)]{ “PRODUCT_ID”=> “中1”, “ID”=> “中1”}
评论指数:/ products / 1 / comments
错误信息:
Fixnum:Class的未定义方法`model_name' 参数: { “PRODUCT_ID”=> “中1”}
**索引视图中的相关代码**
18: <td><%= link_to 'Show', [@product, comment.id] %></td>
19: <td><%= link_to 'Edit', edit_product_comment_path(@product, comment) %></td>
20: <td><%= link_to 'Destroy', [@product, comment], :confirm => 'Are you sure?', :method => :delete %></td>
我花了几天时间搞乱这件事无济于事。检查简单的事情,例如:id to :(名词)_id以及在我的视图链接中切换[@product,comment]和[@product,comment.id]。
如何使这项工作受到高度赞赏。看起来它应该很简单,而且我几乎都遵循了“书”。这样做的问题在于我的rails文本(The Rails方式和一本带有几个章节的ruby介绍书)最多基于rails 2,并且Web资源尚未完全更新。
更新 * 的routes.rb * Party2 :: Application.routes.draw做
resources :comments
resources :products do
resources :comments
end
评论索引中的错误
Fixnum:Class
的未定义方法`model_name'
评论索引的相关代码(第18行的错误)
18: <td><%= link_to 'Show', [@product, comment.id] %></td>
19: <td><%= link_to 'Edit', edit_product_comment_path(@product, comment) %></td>
20: <td><%= link_to 'Destroy', [@product, comment], :confirm => 'Are you sure?', :method => :delete %></td>
另一次更新: * 模型 *
class Product < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :product
end
再次感谢,
卡梅伦
(对我来说这似乎不太常见,因为我一直在关注教程。:/)
答案 0 :(得分:0)
如果评论只能属于一个产品,那么您应该可以在comments_controller.rb中执行以下操作:
def show
@comment = Comment.find(params[:id])
# @product = @comment.product
end