我尝试使用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
会被添加到我的错误消息中?我怎样才能避免这种行为?
答案 0 :(得分:2)
你可以添加:
errors:
format: "%{message}"
这样您只需显示带有属性名称的错误消息。
修改:这应该添加到config/locales/fr.yml
而非config/locales/activerecord.fr.yml
(也有errors:
)
答案 1 :(得分:1)
找到一个可以解决您目的的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
答案 2 :(得分:1)
你可以简单地使用:
@address.errors.messages[:zip_code] # or @address.errors[:zip_code]
#=> ['Some message']