ActionView::Helpers::NumberHelper
方法很喜歡一個nubmer_with_precision
採取precision
選項,默認值是3
。如何重寫的「::的ActionView ::助手方法NumberHelper`默認選項
我想設置的默認值3
到2
。
哪裏應該寫重寫方法 而如何重寫方法僅僅只有默認值
ActionView::Helpers::NumberHelper
方法很喜歡一個nubmer_with_precision
採取precision
選項,默認值是3
。如何重寫的「::的ActionView ::助手方法NumberHelper`默認選項
我想設置的默認值3
到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
您可以創建自己的類寫的另一種方法:??
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"
是的,我可以創建另一個方法,但我想覆蓋現有方法的默認選項。 – ironsand
我固定的錯字和名字'配置/初始化/ number_with_precision.rb'下救了你的代碼,並重新啓動服務器的軌道,但'逗號後3位數字number_with_precision'顯示依然。任何猜測我做錯了什麼? – ironsand
@ironsand抱歉,錯字,現在修復並添加了需要的庫部分。我之前沒有測試過代碼,但現在在我的本地環境中進行了測試。您可以先嚐試使用'number_with_precision(3.123456,precision:2)'而不使用此修補程序,以查看它是否有效。如果沒有,那麼您使用的Rails版本中可能會出現一些命名問題。您可能需要找出控制精度的參數名稱,並相應地更新補丁。您需要重新啓動您的rails應用程序才能在初始化程序中引入更新。 –
謝謝,它現在完美的工作! – ironsand