2
親オブジェクトを作成し、2つのネストされた子を持つフォームを作成するウィザードの状況があります。Rails:ネストされたフォームの子オブジェクトのパラメータを取得する方法
このような提出外観を得るパラメータ:
Parameters: {"room"=>
{"parents_attributes"=>
{"0"=>{"name"=>"r2", "phone"=>"07443107986"},
"1"=>{"name"=>"", "phone"=>""}}},
"commit"=>"Go!", "id"=>"step03"}
(コミットとidは邪悪なウィザードステップからのもの)
ユーザーがページを更新する場合は、これらの子供たちのためのIDのは、変更とidのはfields_forによって生成されるため
Parameters: {"room"=>
{"parents_attributes"=>
{"1"=>{"name"=>"r2", "phone"=>"07443107986"},
"2"=>{"name"=>"", "phone"=>""}}},
"commit"=>"Go!", "id"=>"step03"}
:パラメータは次のようになります。
私のコントローラのコードは、(部屋は前のステップでのセッションで保存されている)、このようなデータを取得します。
@room = Room.find(session[:room_id])
@room.parents.build(room_params[:parents_attributes]['0'])
@room.parents.build(room_params[:parents_attributes]['1'])
このユーザーはページを更新しない場合は、明らかにのみ機能します。また、バリデーションが子どものIDを変更した場合でも変更されます。
paramsハッシュからこれらのparent_attributesを取得するより良い方法はありますか?
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