自定义Rails验证消息(不显示属性名称)Rails 4

时间:2014-08-27 14:50:13

标签: ruby-on-rails ruby internationalization

我正在尝试在rails中编写自定义验证消息。

我有这个验证:

validates_confirmation_of :password, if: :password_required?, message: 18n.t('password_confirmation.confimation')

问题是:Rails将属性名称放在消息前面。

因此,对于无效密码我正在获取:“确认密码密码应匹配”

如何摆脱邮件前面的属性名称?

1 个答案:

答案 0 :(得分:3)

您可以在语言环境yml文件中自定义错误消息的格式。只需将您自己的格式添加到您的项目中即可。

E.g。在文件 config / locales / en.yml

en:
  errors:
    format: "%{message}"

请参阅https://github.com/rails/rails/blob/master/activemodel/lib/active_model/locale/en.yml#L4了解原始格式。

<强>更新

如果您不想全局更改格式并仅针对这种情况显示特定消息,则应在视图中处理该格式。我不知道你是如何显示错误的。如果你以某种方式使用errors.full_messages,在这种情况下你不应该添加格式前缀。你可以,例如编写一个直接获取错误的帮助器(@your_model.errors[:email])并自己构造所需的输出。