我有一个网站,有两种口味,英语和法语。这是一些代码
app/views/user/register.html.erb
-----------------
<% form_for .....>
<%= f.text_field :first_name %>
<% end %>
app/models/user.rb
------------------
class User < ActiveRecord::Base
validates_presence_of :first_name
end
现在要显示错误消息,以防网站在法语版本中提供,我有
app/config/locales/fr.yml
-------------------------
activerecord:
errors:
messages:
empty: "ne peut pas être vide"
因此,如果某人没有填写名字,验证人将获取该字段的名称,并附加自定义消息以获取空子句
"First name ne peut pas être vide"
这是不正确的,因为法语中的'名字'是'Prénom',所以它应该是
"Prénom ne peut pas être vide"
请有人建议一种达到预期效果的方法。
答案 0 :(得分:6)
来自ActiveRecord :: Error类中的generate_full_methods的Rails文档......
将错误消息包含到 full_message格式。
默认的full_message格式 任何语言环境都是“{{attribute}} {{message}}“。可以指定 特定于语言环境的默认full_message 将其存储为翻译格式 为了钥匙 : “activerecord.errors.full_messages.format”
另外,可以指定一个 验证特定的错误消息 通过存储翻译格式 : “activerecord.errors.full_messages [message_key]。”。 例如。任何的full_message格式 使用的验证:空白作为 消息密钥(例如 validates_presence_of)可以存储 至 : “activerecord.errors.full_messages.blank”
因为a使用了消息密钥 验证可以覆盖 validates_ *类宏级别 可以自定义full_message 任何特定验证的格式:
#app / models / article.rb class Article&lt;的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!
答案 1 :(得分:0)
您可以使用此gem:advanced_errors
指定第一个字符为“^”时不包含字段名称的自定义错误消息。所以,你会有像
这样的消息"^Prénom ne peut pas être vide"
他们会正常显示。