У меня есть ситуация с мастером, в которой я создаю объект-родитель, а затем создаю форму с двумя вложенными дочерними элементами.Rails: как получить параметры для дочерних объектов во вложенной форме
Параметров, которые получают представленные выглядеть следующим образом:
Parameters: {"room"=>
{"parents_attributes"=>
{"0"=>{"name"=>"r2", "phone"=>"07443107986"},
"1"=>{"name"=>"", "phone"=>""}}},
"commit"=>"Go!", "id"=>"step03"}
(фиксация и идентификатор являются от Злого шага мастера)
Если пользователь обновляет страницу, идентификатор для этих детей меняются и параметры выглядят так:
Parameters: {"room"=>
{"parents_attributes"=>
{"1"=>{"name"=>"r2", "phone"=>"07443107986"},
"2"=>{"name"=>"", "phone"=>""}}},
"commit"=>"Go!", "id"=>"step03"}
Поскольку идентификаторы генерируются полями_for.
Мой контроллер код извлекает данные, как это (в помещении сохраняется в сессии на предыдущем шаге):
@room = Room.find(session[:room_id])
@room.parents.build(room_params[:parents_attributes]['0'])
@room.parents.build(room_params[:parents_attributes]['1'])
Это, очевидно, работает только если пользователь не обновляет страницу. Кроме того, если проверки активируют идентификацию детей, это тоже изменится.
Что является лучшим способом получить эти parent_attributes из хэша params?
EDIT
В шаге мастера, дочерние объекты построены так:
when :step03
@room = Room.find(session[:room_id])
2.times{ @room.parents.build }
'room_params [ : parents_attributes] .each {| k, _ | @ room.parents.build (room_params [: parents_attributes] [k])} '- можете ли вы сделать что-то вроде этого, когда вы будете извлекать хэш-ключи динамически? – dp7
Это не нужно делать, если вы используете 'nested_attributes' в своей родительской модели. Вы пробовали этот подход? –
@ Anthony E да, я использую вложенные атрибуты – rmcsharry