Как бороться с европейскими форматами чисел в рельсовых формах? - PullRequest
1 голос
/ 16 ноября 2010

Итак, вот такая ситуация: приложение rails с двумя идиомами, в котором пользователи используют формат 5,000.40 для записи чисел (стандартный английский), а другое 5.000,40.

Теперь вопрос в том, как мне с этим бороться? Я использую помощники i18n для работы с выводом, но я не знаю, как обрабатывать эти числа в моем контроллере rails.

Ответы [ 2 ]

2 голосов
/ 18 ноября 2010

Вот что я сделал, чтобы заставить это работать:

Внутри инициализатора:

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
0 голосов
/ 17 ноября 2010

Используйте метод локализации

=l record.amount

и определите конкретный формат в файлах локали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...