ruby-on-rails - 配列 - rails5 params



入れ子になったparamsにアクセスする方法 (1)

paramsからネストしたフィールドにアクセスするには、次のようにします。

params[:order][:items_attributes].values.each do |item|
  item[:type_id]
end if params[:order] and params[:order][:items_attributes]

上記の解決策は、正しい関連付けとaccepts_nested_attributes_forを宣言している場合にのみaccepts_nested_attributes_forます。

class Order < ActiveRecord::Base
  has_many :items
  accepts_nested_attributes_for :items, :allow_destroy => true
end

class Item < ActiveRecord::Base
  belongs_to :order
end

いくつかの入れ子になったパラメータを取得したいのですが。 私はたくさんのアイテムを持つOrderを持っていて、これらのアイテムはそれぞれTypeを持っています。 コントローラのcreateメソッドからtype_idパラメータを取得したいのですが。

@order = Order.new(params[:order])
@order.items.each do |f|
  f.item_type_id = Item_type.find_by_name(f.item_type_id).id
end

その理由は、ユーザーがビューに新しいitem_typeを作成できるようにしたいからです。 彼らがそうするとき、私はAJAX呼び出しを使用してそれらをdbに追加します。 彼らがフォームをポストするとき、私はitem_type_idパラメータでitem_typeの名前を得ます、そして、私は正しいitem_typeを見つけてそれにidを設定したいです。





nested-forms