因为在Rails 3中,form.error_messages已被弃用,我使用了一个部分,我在其中迭代full_messages并构造我的html,如下所示:
<% model.errors.full_messages.each do |msg| %>
<p><%= msg %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是应用程序的默认语言环境不是英语,而在我的语言中,full_messages的结构有点不自然:
{{attribute}} {{message}}
Run Code Online (Sandbox Code Playgroud)
我从generate_full_messages的源代码中看到我可以本地化格式,所以在我的语言环境的yml文件(bg.yml)中我添加了这个:
bg:
activerecord:
errors:
full_messages:
format: "[...]"
Run Code Online (Sandbox Code Playgroud)
但是,验证错误的格式保持不变.
更改您当前的代码
<% @object.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
有了这个
<% @object.errors.messages.values.each do |msg| %>
<% msg.each do |m| %>
<li><%= m %></li>
<%end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
并在您的模型中自定义消息:
validates :attribute, :presence => { :message => 'Attribute cannot be blank' }
Run Code Online (Sandbox Code Playgroud)
不知道它是否可以提供帮助,但Github上提供了保加利亚语的语言环境文件.
你也可以尝试这个(应该根据导轨指南):
bg:
errors:
format: "%{message}"
messages: &error_messages
empty: "Something something %{attribute} something something"
Run Code Online (Sandbox Code Playgroud)
这篇博文和这个堆栈溢出问题也谈到了奇怪的{{attribute}} {{message}}结构.似乎是由安装在同一服务器上的两个I18n gem之间的冲突引起的.
| 归档时间: |
|
| 查看次数: |
17329 次 |
| 最近记录: |