我有一个双嵌套资源:
resources :companies do
resources :orders do
resources :comments
end
end
在我的订单展示视图中尝试包含表单以创建评论时遇到问题。这就是我尝试过的:
<%= form_for([@order, @order.comments.build]) do |f| %>
然而,这给了我一个无方法错误。
你有机会推荐最好的方法来解决这个问题。
答案 0 :(得分:3)
您还必须定义公司。如果你写rake routes
,你可以看到你没有order_comments_path
,因为它是双嵌套的,所以你会看到company_order_commments_path
之类的东西,它至少需要两个参数,一个company_id
和一个order_id
@company
。因此,如果您真的想要使用这个3级nester资源,则必须在表单路径中添加<%= form_for([@company, @order, @order.comments.build] do |f| %>
变量。像:
company
但在大多数情况下,定义order
和order
来识别orders
是没用的,所以另一个选项可以更好地为{{分别添加另一条路线1}}和comments
,这是有道理的。
在您的routes.rb
...
resources :orders do
resources :comments
end
...
因此,您可以操纵orders
,而无需指定company
。同样在大多数情况下,通过定义3级嵌套路由,您无法获得任何重要优势。