Как переопределить общие сообщения об ошибках activerecord в ruby-on-rails? - PullRequest
7 голосов
/ 22 марта 2010

В моем файле перевода en.yml у меня есть:

activerecord:
  errors: 
    template: 
       header: 
         one: "1 error prohibited this {{model}} from being saved"
         other: "{{count}} errors prohibited this {{model}} from being saved"  

Когда во время входа в приложение возникает ошибка активной записи / проверки, появляется сообщение об ошибке:

"1 ошибка запретила сохранение этой сессии пользователя"

отображается (где user_session - используемая модель). Я бы предпочел, чтобы он сказал что-то вроде

«Произошла ошибка, из-за которой вы не можете войти в свою учетную запись».

Как мне переопределить общее сообщение об ошибке с моим конкретным?

Ответы [ 2 ]

12 голосов
/ 29 ноября 2011

Я нашел маршруты, по которым следует Rails (2.3.8) для перевода сообщений об ошибках (с i18n 0.6.0): Кроме того, не забудьте изменить формат full_messages, чтобы он соответствовал вашим настраиваемым сообщениям.

Вот пример с моделью "Лошадь", которая проверяет атрибут "имя" (не может быть пустым).

В вашей модели (app / models / horse.rb):

validates_presence_of :name

В вашем файле перевода (config / locales / en.yml):

en:
  activerecord:
    errors:
      models:
        horse:
          attributes:
            name:
              blank: "Hey, are you the horse with no name?"
      full_messages:
        format: "%{message}"

Ниже приведена ссылка на страницу руководств RoR, где я нашел это. Также есть список сообщений, которые требуются для каждого варианта проверки.

Обозначения и значения по умолчанию могут изменяться в более поздних версиях Rails и / или i18n.

0 голосов
/ 22 марта 2010

Вам нужно создать свой собственный FormBuilder и изменить его ключ перевода.

...