Как получить доступ к вложенным параметрам
Я хотел бы получить некоторые вложенные параметры. У меня есть Орден, у которого много предметов, и у этих предметов есть Тип. Я хотел бы получить параметр 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 в параметре item_type_id, и я хочу найти правильный item_type и установить id для этого
Ответы
Ответ 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
.
class Order < ActiveRecord::Base
has_many :items
accepts_nested_attributes_for :items, :allow_destroy => true
end
class Item < ActiveRecord::Base
belongs_to :order
end