Rails 3 / 3.1 и I18n: проверки правильности при переключении между языками - PullRequest
0 голосов
/ 17 января 2012

База данных заполнена значениями на английском языке и в формате, например: hourlyrate => 20.90.При первом запуске (по умолчанию английский язык), форма ввода правильно отображает содержимое поля.Я могу изменить и сохранить, без проблем.Если я переключаюсь на немецкий, номер отображается правильно, как 20,90.Если я что-то отредактирую в этой форме, я не смогу снова сохранить, так как валидация поймает число как недействительное.

У меня вопрос, нужно ли вносить исправления в моем контроллере перед сохранением, или я сделал это?пропустить какую-то встроенную функцию Rails?

Соответствующие части кода

Помощник:

def my_number_with_precision(value)
  if value 
    # value
    number_with_precision(value, :precision => 2)
  end  
end

Проверка:

validates :hourlyrate, :numericality => { :greater_or_equal_than => 0, :message => " is an invalid number or below zero" }

Форма:

<div class="input">
  <%= f.text_field :hourlyrate, :value => my_number_with_precision(f.object.hourlyrate) %>
</div>

Gemfile

gem 'rails-i18n'

1 Ответ

0 голосов
/ 21 января 2012

Я предложил одно из следующих решений - код для конкретного языка:

def parse_i18n(value)
  if I18n.locale = 'de' 
    value.gsub(',', '.')
  else
    value
  end
end

def parse_i18n(value)
  value.gsub(I18n.t("number.currency.format.unit"),'').
        gsub(I18n.t("number.currency.format.delimiter"), '').
        gsub(I18n.t("number.currency.format.separator"), '.') 
end
...