Rails 3 では、同じオブジェクトparams
を参照します。request.parameters
Rails 4 での強力なパラメーターの追加により、は から作成されparams
た の個別のインスタンスを参照するようになりました。ActionController::Parameters
request.parameters
これの副作用は、一度呼び出すとparams
(それによって個別のParameters
オブジェクトが作成される)、呼び出しrequest.format=
が更新されないことparams
です。
レール 3:
params # set @_params to request.parameters
request.format = "mobile"
params[:format]
=> "mobile"
レール 4:
params # set @_params to Parameters.new(request.parameters)
request.format = "mobile"
params[:format]
=> nil
これは技術的にはバグではありません。これは、クライアント コードがこの情報の真のソースとして参照するrequest.format
のではなく、簡単に参照できるためですparams[:format]
(両方を同じ意味で使用できるとは期待できません)。
しかし、それは私にはデザインの回帰のように感じます. 「例外を除いて」同じparams
でrequest.parameters
あることは、現在、私たちにバグを引き起こしています。将来、多くの開発者にバグを引き起こすと予想しています。
私は間違っていますか?もしそうなら、なぜこれが本当に問題にならないのですか?このパスにたどり着いたユースケースは、format= のドキュメントからの正確なものであることに注意してください。