Как получить доступ к вложенным параметрам - PullRequest
12 голосов
/ 09 апреля 2010

Я бы хотел получить несколько вложенных параметров. У меня есть Орден, в котором есть много Предметов, и каждый из них имеет Тип. я хотел бы получить параметр 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-вызов и добавляю их в БД. Когда они публикуют форму, я получаю имена item_type в параметре item_type_id, и я хочу найти правильный item_type и установить идентификатор для этого

1 Ответ

26 голосов
/ 10 апреля 2010

Чтобы получить доступ к вложенным полям из 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
...