私はよくこれを書いています。
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
よりシンプルでクリーンなものはありますか?
2番目のアプローチが適切ではないと書いたとき、ハッシュAPIの豊富さを考えると、これにはすでにいくつかのメソッドやイディオムがあり、サルのパッチは必要ないのではないかと思いました。たぶんそうでもない。答えたすべての人に感謝します!
—
Mark Westling、
Hash#exceptはまさに私が探していたものでした。私はそれがRailsコア拡張であることを覚えていなかったので、Hash APIでそれが見つからないことに戸惑いました。
—
Mark Westling
厳密に言えば答えはそうです
—
tokland 2013
Hash#except!
がHash#except
、行く方法です(params
!をいじらないでください)。経験則として、絶対に必要な場合を除いて、オブジェクトをインプレースでいじらないでください。副作用によって予期しない結果が生じる可能性があります。