Как локализовать пользовательские сообщения об ошибках в валидациях активных записей? - PullRequest
0 голосов
/ 05 июня 2018

Если быть точным, я пытался локализовать Пользовательские методы пример здесь .Я нашел похожий вопрос , но я не знаю, как передать этот аргумент : message в методе errors.add () .Я попытался сделать что-то вроде этого:

errors.add(:discount, message: :greater_than_value_error)

, но он печатает:

{:message=>:greater_than_value_error} 

вместо того, чтобы печатать фактическое сообщение об ошибке, которое было в файле .yml.

Какой здесь должен быть правильный синтаксис?

Мой файл .yml выглядит примерно так (не уверен, что этот фрагмент ниже на 100% точен):

activerecord: #try to use activemodel here
  errors:
    models:
      invoice: # or namespace/model_name
        attributes:
          discount:
            greater_than_value_error: "can't be greater than total value"

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Если вы пишете пользовательскую проверку, вам нужно выполнить фактический перевод,

errors.add(:discount, I18n.t(path_to_locale_text))

Вы можете интернационализировать стандартные сообщения проверки как предопределенные валидаторы greater_than_value_error, только если вы используете встроенные методы.

validates_numericality_of :discount :greater_than => limit

Проверьте https://stackoverflow.com/a/4453350/1232447 для более подробной информации.

0 голосов
/ 05 июня 2018

попробуйте следующий errors.add :field_name, :message с рельсами 4.

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