两次嵌套资源Form_For问题

时间:2011-06-12 18:39:07

标签: ruby-on-rails

我有一个双嵌套资源:

 resources :companies do 
    resources :orders do
      resources :comments
  end
 end

在我的订单展示视图中尝试包含表单以创建评论时遇到问题。这就是我尝试过的:

<%= form_for([@order, @order.comments.build]) do |f| %>

然而,这给了我一个无方法错误。

你有机会推荐最好的方法来解决这个问题。

1 个答案:

答案 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

但在大多数情况下,定义orderorder来识别orders是没用的,所以另一个选项可以更好地为{{分别添加另一条路线1}}和comments,这是有道理的。 在您的routes.rb

...
resources :orders do
   resources :comments
end
...

因此,您可以操纵orders,而无需指定company。同样在大多数情况下,通过定义3级嵌套路由,您无法获得任何重要优势。