如何在Rails 4中允许带散列的数组?

mal*_*uri 12 ruby-on-rails

Rails 4中有以下参数:

{"delivery_time":"10","delivery_type_id":"1","order_items":[{"count":"5","item_id":"1"}],"order_status_id":"1","user_id":"1","action":"create","controller":"api/v1/orders"}
Run Code Online (Sandbox Code Playgroud)

有以下强烈的参数:

params.permit(:user_id, :order_status_id, :delivery_type_id, :delivery_time, order_items:[])
Run Code Online (Sandbox Code Playgroud)

但是这段代码返回没有'order_items'数组的哈希.我认为原因是数组中的哈希.请告诉我,我该如何解决?提前致谢

ver*_*as1 16

您可以包含嵌套数组,对于您的示例,它将是:

params.permit(:user_id, :order_status_id, :delivery_type_id, :delivery_time, order_items: [:count, :item_id])
Run Code Online (Sandbox Code Playgroud)

其他人可以在这里找到更多 - http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html


sun*_*nil 5

如上所述在这里,你可以允许嵌套的属性如下。

params.permit(:user_id, :order_status_id, :delivery_type_id, :delivery_time, order_items_attributes:[:count, :item_id])
Run Code Online (Sandbox Code Playgroud)

但是,请记住添加以下行以接受模型中的嵌套属性。例如:

class Order < ActiveRecord::Base
  has_many :order_items
  accepts_nested_attributes_for :order_items
end
Run Code Online (Sandbox Code Playgroud)