2016-11-19 98 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> 

我想這樣做的原因是因爲當我評價參數,它仍然被傳遞到@profile.update(profile_params)Profiles#Update的後半段,並創建一個記錄,我不希望它來創建。

所以我想要做的就是成功處理後,將其刪除/彈出/將其從profile_params[:videos_attributes]散列中刪除。

回答

3

profile_params每次都會返回一個新的散列(帶有從params列入白名單的數據副本)。直接修改params

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

我以前被燒過了。 :)

+0

這是100%的錢。非常感謝! – marcamillion

相關問題