Ruby on Rails: управление макетом сообщения об ошибке в ActiveRecord - PullRequest
1 голос
/ 24 апреля 2010

Мои сообщения об ошибках в Rails выглядят следующим образом:

"Email Ваш электронный адрес недействителен."

Почему имя поля имеет префикс в самой строке? Это делает сообщения об ошибках ужасно странными.

Есть ли способ обойти это поведение, чтобы я мог видеть "Ваш адрес электронной почты неверен"

1 Ответ

4 голосов
/ 24 апреля 2010

Документация для generate_full_message может быть полезна:

Формат full_message по умолчанию для любой локали - "{{attribute}} {{message}}". Можно указать специфичный для локали формат full_message по умолчанию, сохранив его как перевод для ключа: "activerecord.errors.full_messages.format".

Кроме того, можно указать формат сообщения об ошибке для конкретной проверки, сохранив перевод для: "activerecord.errors.full_messages.[message_key]". Например. формат full_message для любой проверки, которая использует: blank в качестве ключа сообщения (например, validates_presence_of), может быть сохранен в: "activerecord.errors.full_messages.blank".

Поскольку ключ сообщения, используемый валидацией, может быть перезаписан на макроуровне класса validates_ *, можно настроить формат full_message для любой конкретной валидации:

# app/models/article.rb
class Article < ActiveRecord::Base
  validates_presence_of :title, :message => :"title.blank"
end

# config/locales/en.yml
en:
  activerecord:
    errors:
      full_messages:
        title:
          blank: This title is screwed!

В вашем случае, поскольку вы используете формат {{attribute}} {{message}} по умолчанию, вы получаете «Электронная почта» для атрибута и «Ваш электронный адрес недействителен» в качестве сообщения. Вы можете изменить аргумент :message на «Неправильный формат», и вы должны получить «Email не является допустимым форматом». Это быстрое решение. Если вы хотите полностью настроить его, вы можете использовать метод локали выше.

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