Nested_attributes 不要出现在我的参数中

Nested_attributes dont appear in my params

我正在尝试将 nested_form 添加到我的模型新表单中。

<%= form_for :master_box, url: master_boxes_path do |f| %>
    <%= f.label :number %><br>
    <%= f.text_field :number %>

    <%= f.fields_for :orders do |o| %>
        <fieldset>
            <%= o.label :number, "Number" %>
            <%= o.text_field :number %>
        </fieldset> 
    <% end %>
    <br>
    <%= f.submit %>
<% end %>

我不知道为什么当我提交创建我的 masterbox 时,我的参数不包含 orders_attributes

这是我的模型:

class MasterBox < ActiveRecord::Base
  has_many :orders
  accepts_nested_attributes_for :orders
end


class Order < ActiveRecord::Base
  has_many :products
  belongs_to :master_box
end

和我的强参数:

def master_box_params
  params.require(:master_box).permit(:number, :number_orders, orders_attributes: [:number])
end

这很简单,但我不明白为什么我的参数中没有 orders_attributes。 我有这个,只有 "orders" :

fields_for :orders 创建您看到的 orders 参数。您的强参数 orders_attributes: [:number] 的这一点允许传递 ordersnumbers 属性。您应该查看收到的 orders 参数。那就是你想要的数据所在。

尝试将表单的第一行更改为:

<%= form_for @master_box, url: master_boxes_path do |f| %>

并在您的参数中传递 id:

def master_box_params
  params.require(:master_box).permit(:number, :number_orders, orders_attributes: [:id, :number])
end