如何处理rails表单中的欧洲数字格式?

时间:2010-11-16 20:32:22

标签: ruby-on-rails

所以,情况就是这样:一个带有两个习语的rails应用程序,一个用户使用格式5,000.40来编写数字(标准英语),另一个用5.000,40

现在的问题是,我该如何处理?我正在使用i18n助手来处理输出,但我不知道如何在我的rails控制器中处理这些数字。

2 个答案:

答案 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

并在语言环境文件中定义特定格式。