Railsを2.3.9にしたらエラー時の入力値がリセットされるようになった
正確に言うと、数値で入力する項目に文字入れたら0に初期化された。
で、詳しく調べてみたのですが、
railsはエラーが起きたときvalue_before_type_castというメソッドが呼ばれて、
画面入力の値を改めてセットしているんだけど、
どうやらrails2.3.9でそれが変更されているよう。
それが変更されてしまったことにより、うまく動いてくれなくなったみたい。
Rails 2.3.9以前
def value_before_type_cast(object, method_name) unless object.nil? object.respond_to?(method_name + "_before_type_cast") ? object.send(method_name + "_before_type_cast") : object.send(method_name) end end
Rails 2.3.9
def value_before_type_cast(object, method_name) unless object.nil? object.respond_to?(method_name) ? object.send(method_name) : object.send(method_name + "_before_type_cast") end end
どうやら、この変更が原因でおかしくなっているようです。
バグだというタレこみもあったらしく、
次のバージョンでは元に戻すらしいお。