如何覆盖" ActionView :: Helpers :: NumberHelper`方法

时间:2015-12-20 01:09:58

标签: ruby-on-rails ruby

ActionView::Helpers::NumberHelper个方法喜欢nubmer_with_precisionprecision选项,默认值为3

我想将默认值3设置为2

我应该在哪里编写覆盖方法? 以及如何仅覆盖默认值的方法?

2 个答案:

答案 0 :(得分:2)

您可以在初始化程序中修补此方法。创建一个,或将以下内容附加到config/initializers中的初始值设定项。

require 'action_view'

module ActionView::Helpers::NumberHelper
  alias_method :__number_with_precision, :number_with_precision
  private :__number_with_precision

  def number_with_precision(number, options = {})
    options = {precision: 2}.merge(options)
    __number_with_precision(number, options)
  end
end

答案 1 :(得分:1)

您可以创建自己的类来编写另一种方法:

class Foo
  extend ActionView::Helpers::NumberHelper
  def self.my_custom_number_with_precision(number, precision = 2)
    number_with_precision(number, precision: precision)
  end
end

Foo.my_custom_number_with_precision(22) #=> "22.00"
Foo.my_custom_number_with_precision(121.41256) #=> "121.41"