我在 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/