在我的item
模型中,我有一行has_many :user_items, validate: true
来验证user_item
模型在item
获得验证时的效果。验证错误消息如下所示:
>> @item.errors
=> ... @messages={:name=>["can't be blank"],
:description=>["can't be blank"],
:"user_items.picture"=>["can't be blank"],
:user_items=>["is invalid"]}>
>> @item.errors.full_messages
=> ["Name can't be blank",
"Description can't be blank",
"User items picture can't be blank",
"User items is invalid"]
_error_messages.html.erb
<% if target.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
The form contains <%= pluralize(target.errors.count, "error") %>.
</div>
<ul>
<% target.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
项目的错误消息未显示项目名称。例如,错误消息未显示&#34;项目描述不能为空白&#34;它只显示&#34;描述不能为空。&#34;我怎样才能使用户项目的错误消息以相同的方式省略模型名称,例如&#34;图片不能为空白&#34;而不是&#34;用户项目图片不能为空白&#34;?
答案 0 :(得分:6)
您可以使用ActiveRecord的内置I18n实现。按如下方式更新您的config/locales/en.yml
:
en:
activerecord:
attributes:
item/user_items:
picture: 'Picture'
这将确保您user_items.picuture
的验证邮件显示“图片”。而不是&#39;用户项目图片&#39;对于属性名称。
有关详细信息,请参阅"Translations for Active Record Models"。