问题描述
|
我有一个双重嵌套资源:
resources :companies do
resources :orders do
resources :comments
end
end
尝试在我的订单显示视图中包含一个表单以创建评论时遇到问题。这是我尝试过的:
<%= form_for([@order,@order.comments.build]) do |f| %>
但这给我没有方法错误。
您有机会推荐解决此问题的最佳方法。
解决方法
您还必须定义公司。如果您写
rake routes
,您会发现您没有order_comments_path
,因为它是双嵌套的,所以您会发现诸如company_order_commments_path
这样的东西,它至少需要两个参数,分别是company_id
和order_id
。因此,如果您确实想使用此3级嵌套程序资源,则必须在表单路径中添加一个“ 7”变量。喜欢:
<%= form_for([@company,@order,@order.comments.build] do |f| %>
但是在大多数情况下,同时定义ѭ9和ѭ10来标识ѭ10是没有用的,因此另一个选择可能会更好地为orders
和comments
分别添加另一条路线,这很有意义。
在你的routes.rb中
...
resources :orders do
resources :comments
end
...
因此,您无需指定company
就可以操纵ѭ12manipulate。同样,在大多数情况下,通过定义3级嵌套路由也不会获得任何重要的优势。