2017-03-29 11 views
0

私は、バックエンドとしてRails 5を使用したBackbone/Marionette Webアプリケーションを構築しています。ネストされた属性を持つフォームデータを送信しています。残念なことに、これらのネストされた属性は、:goalパラメータの外側に追加されます。保存する前にメイン(:目標)パラメータに挿入するにはどうすればよいですか?それ以外の場合は無視され、データベースには挿入されません。入れ子になったパラメータをメインパラメータに挿入する方法

これらは、サーバーに送信された私のparamsです:あなたはそれは醜い/非常に汚いですupdate_attributes

をしますか前に

{"id"=>"7", "title"=>"ReBook", "gtype"=>"personal", "starts_at"=>"2017-03-03", "ends_at"=>"2017-10-03", "status"=>"completed", "user_id"=>1, "user_name"=>"Mike", "likes"=>0, "starts_at_formatted"=>"2017-03-03", "ends_at_formatted"=>"2017-10-03", "goalresults_attributes"=>{"description"=>"rrr", "progress"=>"333"}, "goal"=>{"id"=>"7", "user_id"=>1, "title"=>"Rebook", "gtype"=>"personal", "starts_at"=>"2017-03-03", "ends_at"=>"2017-10-03", "status"=>"completed"}} 
+0

あなたは強力なパラメータを使用していると仮定します。あなたのコントローラから関連コードを投稿できますか? – mmichael

答えて

0
params['goal']['user_name'] = params['user_name'] 
params['goal']['likes'] = params['likes'] 
params['goal']['starts_at_formatted'] = params['starts_at_formatted'] 
params['goal']['goalresults_attributes'] = params['goalresults_attributes'] 
params['goal']['progress'] = params['progress'] 

はこれを中に入れてください。しかし、それは仕事を完了します

+0

私はこれをしません。彼は強力なパラメータを使用する必要があります。 – mmichael

+0

@mmichael強力なパラメータを使用することはできます。 'permit'と' require'の前にこれを行う限り。 – Ruslan

+0

強力なparamsを適切に構築して(accepts_nested_attributes_forを使用している場合)、手動で組み合わせる必要はありません。 – mmichael

関連する問題