2016-11-19 7 views
2

私はProfilesController#Updateに渡される以下のパラメータがあります。私は何をしたいかアクションでコントローラーに設定された `params`を変更するにはどうすればよいですか?

> profile_params[:videos_attributes] 
=> <ActionController::Parameters {"1479585381276"=><ActionController::Parameters {"vimeo_url"=>"https://www.youtube.com/watch?v=Qj2gkjh3-k", "official"=>"false", "_destroy"=>"false"} permitted: true>, "1479585385202"=><ActionController::Parameters {"vimeo_url"=>"https://vimeo.com/some-awesome-video", "official"=>"true", "_destroy"=>"false"} permitted: true>} permitted: true> 

は、キー1479585381276(またはそのことについては、ハッシュ)とハッシュを削除している

私は.delete(key)を使用してみましたし、その動作していないようです。

> item 
=> "1479585381276" 
> profile_params[:videos_attributes].delete(item) 
=> <ActionController::Parameters {"vimeo_url"=>"https://www.youtube.com/watch?v=Qas34Pce-k", "official"=>"false", "_destroy"=>"false"} permitted: true> 
> profile_params[:videos_attributes] 
=> <ActionController::Parameters {"1479585381276"=><ActionController::Parameters {"vimeo_url"=>"https://www.youtube.com/watch?v=Qas34Pce-k", "official"=>"false", "_destroy"=>"false"} permitted: true>, "1479585385202"=><ActionController::Parameters {"vimeo_url"=>"https://vimeo.com/some-awesome-video", "official"=>"true", "_destroy"=>"false"} permitted: true>} permitted: true> 

私はこれをしたい理由は、私はパラメータを評価するとき、それはまだ私のProfiles#Updateの後半に@profile.update(profile_params)に渡されるためであると私はそれを作成したくないレコードを作成します。

私がやりたいことは、処理が成功したときにそれを削除/ポップする/ profile_params[:videos_attributes]ハッシュから削除することだけです。

答えて

3

profile_paramsは、毎回新しいハッシュを返します(ホワイトリストに記載されたデータのコピーはparams)。 paramsを直接変更してください。

params[:profile][:videos_attributes].delete(item) 

私は以前これを焼いたことがあります。 :)

+0

これはお金の100%です。おかげで多くの孟! – marcamillion

関連する問題