【问题标题】:Twice Nested Resource Form_For Issue两次嵌套资源表单_For Issue
【发布时间】:2011-06-12 18:39:07
【问题描述】:

我有一个双重嵌套资源:

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

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

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

但是这给了我一个无方法错误。

您可以推荐最好的方法来处理这个问题。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您还必须定义公司。如果你写rake routes,你可以看到你没有order_comments_path,因为它是双重嵌套的,所以你会看到像company_order_commments_path这样的东西,它至少需要两个参数,一个company_id和一个order_id。所以如果你真的想使用这个 3 级嵌套资源,你必须在表单路径中添加一个 @company 变量。喜欢:

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

    但在大多数情况下,同时定义companyorder 来识别order 是没有用的,因此另一个选项可能更好地为orderscomments 分别添加另一条路由,这是有道理的。 在你的 routes.rb 中

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

    因此您可以操作orders,而无需指定company。此外,在大多数情况下,定义 3 级嵌套路由不会获得任何重要优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多