所以,情况就是这样:一个带有两个习语的rails应用程序,一个用户使用格式5,000.40
来编写数字(标准英语),另一个用5.000,40
。
现在的问题是,我该如何处理?我正在使用i18n助手来处理输出,但我不知道如何在我的rails控制器中处理这些数字。
答案 0 :(得分:2)
这就是我为此付出的努力:
在初始化程序中:
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
答案 1 :(得分:0)
使用localize方法
=l record.amount
并在语言环境文件中定义特定格式。