Nested_attributes不会出现在我的参数中

时间:2015-02-24 16:02:34

标签: ruby-on-rails ruby forms nested-forms 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 %>

我不知道为什么当我提交创建我的主箱时,我的参数不包含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。 我有这个,只有“订单”: enter image description here

2 个答案:

答案 0 :(得分:1)

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

<%= 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

答案 1 :(得分:0)

fields_for :orders会创建您看到的orders参数。您的强参数orders_attributes: [:number]的这一部分允许numbers的{​​{1}}属性通过。您应该查看您收到的orders参数。这就是你想要的数据。