2016-11-19 2 views
2

я следующие параметры передаются на мой ProfilesController#Update:Как изменить «параметры», установленные в контроллере в действии?

> 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

Смежные вопросы