2017-11-05 2 views
0

以下のパラメーターを使用できます。私のコントローラのアクションでRails 5コントローラーアクションの変更を許可する

p = params.permit(:a, :b, :c, :lines => [:location_id, :quantity, :product => [:id]]) 

、私が許可したデータのparam linesに追加します。

p['lines'] << {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"} 

これは、パラメータが変更された後の様子です。

puts params['lines'] 
#> [<ActionController::Parameters {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"} permitted: false>] 

ご覧のとおり、許可されていません。私はここで何が欠けていますか?私はRails 5を使用しています。

+1

コードを投稿するときに、コードを行単位で投稿してください。現時点では、許可を呼び出した後にハッシュに値を追加することを理解しています。そして、それはうまくいかないでしょう。さらに、なぜparamsに何かを追加する必要がありますか?あなたは何を達成しようとしますか? – spickermann

答えて

0

許可された(ホワイトリストに登録された)パラメータを取得するには、paramsが変更されるたびに許可されたバージョンpに電話する必要があります。

paramspの違いは、params.permit(...)が許可されたコピーを返してpに割り当てていることです。したがって、params許可状態は変更されません。

puts params['lines']の代わりにputs p['lines']を試して、希望の結果が得られるかどうかを確認してください。

関連する問題