【问题标题】:Nested_attributes dont appear in my params嵌套属性没有出现在我的参数中
【发布时间】:2015-02-24 16:02:34
【问题描述】:

我正在尝试将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。 我有这个,只有“订单”:

【问题讨论】:

    标签: ruby-on-rails ruby forms nested-forms params


    【解决方案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
    

    【讨论】:

    • 这正是我的问题。谢谢@adrianmann,我在这上面浪费了很多时间.. :
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多