Rails 3 では、同じオブジェクトparamsを参照します。request.parameters
Rails 4 での強力なパラメーターの追加により、は から作成されparamsた の個別のインスタンスを参照するようになりました。ActionController::Parametersrequest.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= のドキュメントからの正確なものであることに注意してください。