12

ネストされたパラメータを取得したいと思います。多くのアイテムがある注文があり、これらのアイテムにはそれぞれタイプがあります。コントローラの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_typesを作成できるようにするためです。それらがそれを行うとき、私はAJAX呼び出しを使用してそれらをdbに追加します。彼らがフォームを投稿するとき、私はitem_type_idパラメーターでitem_typeの名前を取得し、正しいitem_typeを見つけて、それにIDを設定したいと思います

4

1 に答える 1

27

ネストされたフィールドにアクセスするに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.

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

class Item < ActiveRecord::Base
  belongs_to :order
end
于 2010-04-09T20:14:35.557 に答える