我正在尝试在rails中编写自定义验证消息。
我有这个验证:
validates_confirmation_of :password, if: :password_required?, message: 18n.t('password_confirmation.confimation')
问题是:Rails将属性名称放在消息前面。
因此,对于无效密码我正在获取:“确认密码密码应匹配”
如何摆脱邮件前面的属性名称?
答案 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]
)并自己构造所需的输出。