因为在Rails 3中,form.error_messages已被弃用,我使用的是partial,我遍历full_messages并构造我的html,如下所示:
<% model.errors.full_messages.each do |msg| %>
<p><%= msg %></p>
<% end %>
然而,应用程序的默认语言环境不是英语,而在我的语言中,full_messages的结构有点不自然:
{{attribute}} {{message}}
我从generate_full_messages的来源看到我可以本地化格式,所以在我的语言环境的yml文件(bg.yml)中我添加了这个:
bg:
activerecord:
errors:
full_messages:
format: "[...]"
然而,验证错误的格式保持不变。
答案 0 :(得分:9)
更改您当前的代码
<% @object.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
有了这个
<% @object.errors.messages.values.each do |msg| %>
<% msg.each do |m| %>
<li><%= m %></li>
<%end %>
<% end %>
在您的模型中自定义消息:
validates :attribute, :presence => { :message => 'Attribute cannot be blank' }
答案 1 :(得分:8)
不知道它是否有帮助,而是locale file for Bulgarian is available on Github。
你也可以尝试这个(应该根据rails guides):
bg:
errors:
format: "%{message}"
messages: &error_messages
empty: "Something something %{attribute} something something"
this blog post和stack overflow issue也讨论了奇怪的{{attribute}} {{message}}
结构。似乎是由安装在同一服务器上的两个I18n gem之间的冲突引起的。
答案 2 :(得分:2)
返回数组中给定属性的所有完整错误消息。
@ object.errors.full_messages_for(:名称)
=&GT; [&#34;名称太短(最少5个字符)&#34;,&#34;名称不能为空白&#34;]