因此,情況如下:一個帶有兩個成語的導軌應用程序,其中一個用戶使用格式5,000.40
來編寫數字(標準英語),另一個使用5.000,40
。如何處理歐洲數字格式的軌道形式?
現在的問題是,我該如何處理?我使用i18n幫助器來處理輸出,但我不知道如何在我的rails控制器中處理這些數字。
因此,情況如下:一個帶有兩個成語的導軌應用程序,其中一個用戶使用格式5,000.40
來編寫數字(標準英語),另一個使用5.000,40
。如何處理歐洲數字格式的軌道形式?
現在的問題是,我該如何處理?我使用i18n幫助器來處理輸出,但我不知道如何在我的rails控制器中處理這些數字。
這是我做過什麼來得到這個工作:
內的初始化:
class ActiveRecord::Base
class << self
def handle_internationalization_numbers_for(*fields)
fields.each do |field_name|
define_method "#{field_name}=" do |other|
if valid_number?(other)
write_attribute(field_name, other)
else
# try converting it to a proper number
write_attribute(field_name, other.tr(".,", ",."))
end
end
end
end
end
private
def valid_number?(number)
number.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end
end
然後在您的機型:
handle_internationalization_numbers_for :field_1, :field_2
使用本地化方法
=l record.amount
,並在區域文件中定義的特定格式。
我要的是處理輸入,而不是輸出。我已經這麼做了 – 2010-11-16 22:31:36
那麼你應該用逗號替換點和點的逗號? – Lichtamberg 2010-11-18 17:14:49
您可以將'valid_number?'重寫爲:http://hastebin.com/topidodaxo.rb – 2015-07-15 10:42:41