ruby-on-rails - ruby rails : controlling the layout of an error message in ActiveRecord

标签 ruby-on-rails ruby

我在 Rails 中的错误消息如下所示:

“电子邮件您的电子邮件无效。”

为什么字段名称在字符串本身中有前缀?它使错误消息看起来非常奇怪。

有没有办法规避这种行为,以便我只能看到“您的电子邮件无效。”

最佳答案

generate_full_message 的文档可能有用:

任何语言环境的默认 full_message 格式都是“{{attribute}} {{message}}”。可以通过将其存储为键的翻译来指定区域设置特定的默认 full_message 格式:“activerecord.errors.full_messages.format”。

另外,可以通过存储“activerecord.errors.full_messages.[message_key]”的翻译来指定特定于验证的错误消息格式。例如。任何使用 :blank 作为消息键(例如 validates_presence_of)的验证的 full_message 格式可以存储到:“activerecord.errors.full_messages.blank”。

因为验证使用的消息 key 可以在 validates_* 类宏级别上被覆盖,所以可以为任何特定验证自定义 full_message 格式:

# app/models/article.rb
class Article < ActiveRecord::Base
  validates_presence_of :title, :message => :"title.blank"
end

# config/locales/en.yml
en:
  activerecord:
    errors:
      full_messages:
        title:
          blank: This title is screwed!

在您的情况下,由于您使用的是默认的 {{attribute}} {{message}} 格式,因此您会收到该属性的“电子邮件”和“您的电子邮件无效”作为消息。您可以将 :message 参数更改为“is not a valid format”,您应该得到“Email is not a valid format”。这是快速解决方法。如果你想完全自定义它,你可以使用上面的语言环境方法。

关于ruby-on-rails - ruby rails : controlling the layout of an error message in ActiveRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705421/

相关文章:

ruby-on-rails - 首先对数组的特定项目进行排序

ruby - 为什么 `rescue`默认不能捕获 `StandardError`以外的异常类?

javascript - Ruby on Rails 教程中显示的销毁操作结果

ruby-on-rails - 如何为父 Rails 应用程序提供可用的引擎方法?

ruby-on-rails - 从 Docker Hub 拉取 dockerized rails 应用程序时无法启动它

ruby-on-rails - Rails 4 - thinking-sphinx 日期范围

javascript - Rails 4 - 在生产中,我的 javascript 已加载,但在开发中运行良好时无法运行

ruby-on-rails - 在 M1 芯片上运行 rails 时出错(Apple Silicon)

ruby-on-rails - 将单个表推送到 Heroku

ruby-on-rails - 如何比较 RSPec 中的多个 RHS 值?