Ana*_*hah 2 validation message ruby-on-rails
我有一个网站,有两种口味,英语和法语.这是一些代码
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
Run Code Online (Sandbox Code Playgroud)
现在要显示错误消息,如果网站是在法语版本中提供的,我有
app/config/locales/fr.yml
-------------------------
activerecord:
errors:
messages:
empty: "ne peut pas être vide"
Run Code Online (Sandbox Code Playgroud)
因此,如果有人没有填写名字,验证器将获取该字段的名称并附加自定义消息以获取空子句
"First name ne peut pas être vide"
Run Code Online (Sandbox Code Playgroud)
这是不正确的,因为法语中的'名字'是'Prénom',因此它应该是
"Prénom ne peut pas être vide"
Run Code Online (Sandbox Code Playgroud)
请有人建议一种达到预期结果的方法.
从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".
由于验证使用的消息密钥可以在validates_*类宏级别上覆盖,因此可以为任何特定验证自定义full_message格式:
#app/models/article.rb class Article <ActiveRecord :: Base
Run Code Online (Sandbox Code Playgroud)validates_presence_of :title, :message => :"title.blank" end #config/locales/en.yml en:
Run Code Online (Sandbox Code Playgroud)activerecord: errors: full_messages: title: blank: This title is screwed!
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |