Rails使用嵌套属性更新对象

时间:2016-06-21 09:09:24

标签: ruby-on-rails-4

我正在尝试使用rails accepts_nested_attributes_for更新对象。但我收到一个错误:Unpermitted parameter: cart_product

我有一个has_many关系:

has_many :cart_products
accepts_nested_attributes_for :cart_products

并在我的控制器中定义了我的参数:

def cart_params
  params.require(:cart).permit(
    cart_product_attributes: [
      :quantity,
      :product_id
    ]
  )
end

在我看来,我的表单已经在循环cart_products中。

<%= form_for @cart do |f| %>
      <%= f.fields_for cart_product do |cp| %>
          <%= cp.number_field :quantity, value: cart_product.quantity, min: 1, step: 1, class: "input-quantity"  %>
          <%= cp.hidden_field :product_id, value: cart_product.product_id %>

      <% end %>
<% end %>

如何在表单中设置参数以匹配控制器接受的参数?

三江源。

1 个答案:

答案 0 :(得分:0)

你有没有尝试过:

<%= form_for @cart do |f| %>
      <%= f.fields_for cart_product, @cart.cart_product do |cp| %>
          <%= cp.number_field :quantity, value: cart_product.quantity, min: 1, step: 1, class: "input-quantity"  %>
          <%= cp.hidden_field :product_id, value: cart_product.product_id %>

      <% end %>
<% end %>

来自导轨指南:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for