我希望能够提供国际化、有用的错误消息。
我有一个用于嵌套表单提交的通用错误消息部分视图渲染
# _error_messages.html.erb - Fragment
...
<strong><%= t('errors.template.body') %> </strong>
<ul>
<% object.errors.full_messages.each do |msg| %>
<li><%= msg %> </li>
<% end %>
</ul>
...
我收到了国际化的正文消息,但是,尽管进行了多次 yaml 迭代,但我无法弄清楚如何替换该属性,或者更具体地说,该模型字段(即 validates_presence_of :name)验证的“:空白”错误。
这是我的 yaml 中的一个片段
en:
errors: &errors
format: ! '%{attribute} -- %{message}'
messages:
accepted: must be accepted
blank: must not be blank
body: ! 'There were problems with the following fields:'
activemodel:
attributes:
family_wizard:
children: kids
我这样写了yaml,因为当我检查传递给部分的错误对象时,我将孩子的姓名字段留空(:validates_presence_of:name)看起来像这样:
#<ActiveModel::Errors:0x007111111C111111 @base=#<FamilyWizard id: nil, ...>,
@messages {:children=>["must not be blank"]}>
但我能得到的唯一错误信息是:
以下字段存在问题:
- 孩子——不能为空
理想的解决方案错误消息如下所示:
以下字段存在问题:
- 孩子——名字不能为空
这个 Stack Overflow 问题(How to localize a generic error messages partial in Rails 3.2.3?)在正确的轨道上,但它缺少我想要的 activemodel/activerecord 验证部分。