Rails 5:为什么我的自定义错误消息不起作用?

时间:2019-04-11 07:37:03

标签: ruby-on-rails

我有一个名为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 个答案:

答案 0 :(得分:1)

您可能应该覆盖此消息: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!"