ActiveRecord 验证:将字符串添加到语言环境中的错误消息
ActiveRecord Validations : String added to error message in locales
我正在尝试使用 i18n 自定义验证错误消息。
假设我有一个验证 zip_code
.
是否存在的地址模型
我的 config/locales/activerecord.fr.yml
看起来像这样
fr:
activerecord:
errors:
models:
address:
attributes:
civility:
blank: "Some message"
如果我未通过验证,我在 @address.errors.full_messages
中收到的错误消息将是:
"Zip code Some message"
为什么 Zip code
会添加到我的错误消息中?我怎样才能避免这种行为?
您只需添加:
errors:
format: "%{message}"
这样您将只显示没有属性名称的错误消息。
编辑:这应该添加到 config/locales/fr.yml
而不是 config/locales/activerecord.fr.yml
(它也有 errors:
)
找到一个 gem 可以解决您的问题
借助此 gem,您只需要使用插入符号启动语言环境消息,它不应在消息中显示属性名称。
模型定义为:
class Item < ApplicationRecord
validates :name, presence: true
end
与以下 en.yml:
en:
activerecord:
errors:
models:
item:
attributes:
name:
blank: "^You can't create an item without a name."
item.errors.full_messages
将显示:
#You can't create an item without a name
而不是通常的
#Name You can't create an item without a name
您可以简单地使用:
@address.errors.messages[:zip_code] # or @address.errors[:zip_code]
#=> ['Some message']
我正在尝试使用 i18n 自定义验证错误消息。
假设我有一个验证 zip_code
.
是否存在的地址模型
我的 config/locales/activerecord.fr.yml
看起来像这样
fr:
activerecord:
errors:
models:
address:
attributes:
civility:
blank: "Some message"
如果我未通过验证,我在 @address.errors.full_messages
中收到的错误消息将是:
"Zip code Some message"
为什么 Zip code
会添加到我的错误消息中?我怎样才能避免这种行为?
您只需添加:
errors:
format: "%{message}"
这样您将只显示没有属性名称的错误消息。
编辑:这应该添加到 config/locales/fr.yml
而不是 config/locales/activerecord.fr.yml
(它也有 errors:
)
找到一个 gem 可以解决您的问题
借助此 gem,您只需要使用插入符号启动语言环境消息,它不应在消息中显示属性名称。
模型定义为:
class Item < ApplicationRecord
validates :name, presence: true
end
与以下 en.yml:
en:
activerecord:
errors:
models:
item:
attributes:
name:
blank: "^You can't create an item without a name."
item.errors.full_messages
将显示:
#You can't create an item without a name
而不是通常的
#Name You can't create an item without a name
您可以简单地使用:
@address.errors.messages[:zip_code] # or @address.errors[:zip_code]
#=> ['Some message']