Rails 5: почему не работает мое пользовательское сообщение об ошибке? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть модель с именем Listing. У него есть атрибут с именем application_url, и я пытаюсь установить для него настраиваемое сообщение об ошибке.

class Listing < ApplicationRecord
  # ...

  validate :application_method_present?

  def application_method_present?
    # ...
    errors.add(:application_url, :invalid)
  end
end

Пока что сообщение об ошибке выглядит так:

    @messages=
    {
        :application_url=>["is invalid"]
    }

Я хочу изменить "неверно" на что-то другое. Для этого я добавил следующее к en.yml:

    en:
      errors:
        models:
          listing:
            attributes:
              application_url:
                invalid: "IS ERRORED!"

Но это не имеет никакого эффекта. Я проверил в консоли и на сайте, после перезапуска сервера, но по-прежнему отображается сообщение об ошибке по умолчанию.

Есть ли очевидная причина, по которой мое настраиваемое сообщение не устанавливается? Как мне установить собственное сообщение?

1 Ответ

1 голос
/ 11 апреля 2019

Возможно, вам следует переопределить это сообщение: https://github.com/rails/rails/blob/master/activemodel/lib/active_model/locale/en.yml

en:
  errors:
    messages:
      invalid: "is invalid"

, но он переопределит все invalid ошибки. Так что, на мой взгляд, лучше бы сделать какой-нибудь нестандартный перевод:

errors.add(:application_url, I18n.t("errors.application_url.invalid"))

или попробуйте с помощью клавиши activerecord:

en:
  activerecord:
    errors:
      models:
        listing:
          attributes:
            application_url:
              invalid: "IS ERRORED!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...