Rails 3 に存在するnumber_fieldフォーム ヘルパーを Rails 2.3.15 アプリに追加したいのですが、モジュールの拡張に問題があります。
これらは、Rails 3 から必要なメソッドです
class InstanceTag
def to_number_field_tag(field_type, options = {})
options = options.stringify_keys
if range = options.delete("in") || options.delete("within")
options.update("min" => range.min, "max" => range.max)
end
to_input_field_tag(field_type, options)
end
end
def number_field(object_name, method, options = {})
InstanceTag.new(object_name, method, self, options.delete(:object)).to_number_field_tag("number", options)
end
def number_field_tag(name, value = nil, options = {})
options = options.stringify_keys
options["type"] ||= "number"
if range = options.delete("in") || options.delete("within")
options.update("min" => range.min, "max" => range.max)
end
text_field_tag(name, value, options)
end
これを、アプリケーション ヘルパーに含めるモジュールに追加しています。to_number_field_tag
クラスを開いてオーバーライドを追加するだけなので、メソッドは簡単です。
FormHelper モジュール メソッドで問題が発生しました。これは、祖先チェーンを完全に把握できず、オーバーライドのスコープを設定する方法がわからないためです。基本的にどうすればいいのかわからない。