2015-12-20 25 views

回答

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 
+0

我固定的錯字和名字'配置/初始化/ number_with_precision.rb'下救了你的代碼,並重新啓動服務器的軌道,但'逗號後3位數字number_with_precision'顯示依然。任何猜測我做錯了什麼? – ironsand

+0

@ironsand抱歉,錯字,現在修復並添加了需要的庫部分。我之前沒有測試過代碼,但現在在我的本地環境中進行了測試。您可以先嚐試使用'number_with_precision(3.123456,precision:2)'而不使用此修補程序,以查看它是否有效。如果沒有,那麼您使用的Rails版本中可能會出現一些命名問題。您可能需要找出控制精度的參數名稱,並相應地更新補丁。您需要重新啓動您的rails應用程序才能在初始化程序中引入更新。 –

+0

謝謝,它現在完美的工作! – ironsand

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" 
+0

是的,我可以創建另一個方法,但我想覆蓋現有方法的默認選項。 – ironsand