我经常发现自己写这篇文章:
params.delete(:controller)
params.delete(:action)
params.delete(:other_key)
redirect_to my_path(params)
删除痕迹感觉不正确,也不是:
[:controller, :action, :other_key].each do |k|
params.delete(k)
end
有没有更简单,更清洁的方法?
当我写第二种方法感觉不正确时,我的意思是,鉴于Hash API的丰富性,我怀疑已经有一些方法或习惯用法可用于此目的,因此不需要猴子补丁。也许不是。非常感谢所有回答!
—
马克韦斯特林
Hash#except正是我想要的。我不记得它是Rails核心扩展,所以当我在Hash API中找不到它时,我感到很困惑。
—
马克韦斯特林
请注意,严格的答案是,
—
tokland
Hash#except!
但这Hash#except
只是解决的办法(不要惹恼params
!)。根据经验,除非绝对需要,否则请勿在原地弄乱任何物体,否则副作用可能会带来意想不到的结果。