use*_*963 3 validation activerecord ruby-on-rails
在我的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"]
Run Code Online (Sandbox Code Playgroud)
_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 %>
Run Code Online (Sandbox Code Playgroud)
项目的错误消息不显示项目名称.例如,错误消息未显示"项目描述不能为空",它只显示"描述不能为空".如何使用户项目的错误消息以相同的方式省略模型名称,例如"图片不能为空"而不是"用户项目图片不能为空"?
您可以使用ActiveRecord的内置I18n实现.更新您的config/locales/en.yml如下:
en:
activerecord:
attributes:
item/user_items:
picture: 'Picture'
Run Code Online (Sandbox Code Playgroud)
这将确保您的验证消息user_items.picuture显示"图片",而不是"用户项目的画面"的属性名称.
有关详细信息,请参阅"Active Record Models的翻译".
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |