我将以下参数传递给我的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]
哈希中删除它。
答案 0 :(得分:3)
profile_params
每次都会返回一个新哈希值(包含来自params
的白名单数据的副本)。直接修改params
。
params[:profile][:videos_attributes].delete(item)
我以前被这个烧过了。 :)