lcg*_*ida 4 ruby ruby-on-rails internationalization
我正在尝试在 Rails 中编写自定义验证消息。
我有这个验证:
validates_confirmation_of :password, if: :password_required?, message: I18n.t('password_confirmation.confimation')
Run Code Online (Sandbox Code Playgroud)
问题是:Rails 将属性名称放在消息前面。
因此,在我收到的无效密码上:“确认密码密码应该匹配”
如何去掉消息前面的属性名称?
您可以在语言环境 yml 文件中自定义错误消息的格式。只需将您自己的格式添加到您的项目中。
例如在文件config/locales/en.yml 中:
en:
errors:
format: "%{message}"
Run Code Online (Sandbox Code Playgroud)
有关原始格式,请参阅https://github.com/rails/rails/blob/master/activemodel/lib/active_model/locale/en.yml#L4。
更新
如果您不想全局更改格式并仅针对这种情况显示特定消息,您应该在视图中处理它。我不知道你究竟是如何显示错误的。如果你以某种方式使用errors.full_messages你不应该在这种情况下,它添加了格式前缀。例如,您可以编写一个仅直接获取错误的帮助程序 ( @your_model.errors[:email]) 并自己构建所需的输出。
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |