我无法摆脱错误消息中的属性。(我想知道为什么这不是默认行为(
控制器
if @item.save
...
else
format.html { redirect_to [@profile, :items], alert: @item.errors.full_messages}
end
it.yml
it:
errors:
format: "%{message}"
查看.html
<% if alert %>
<% Array.wrap(alert).each do |msg| %>
<%=msg%>
<% end %>
<% end %>
但我得到这个输出
属性名称 我的自定义消息
使用messages
而不是full_messages
:
@item.errors.messages.values.flatten
由于messages
返回一个哈希,其中键显示验证错误是什么,因此您可以简单地获取并平展所有值。
{ :email=>["Another record exists with this email."], ... } # for example
您需要启用该功能以允许覆盖错误消息格式,因为它默认处于关闭状态。
在config/application.rb
config.active_model.i18n_customize_full_message = true
然后,您可以在全局、模型级别或属性级别自定义格式。 例如
it:
activerecord:
errors:
models:
model_name:
attributes:
attribute_name:
not_a_number: "My custom message"
greater_than: "My custom message"
format: "%{message}"
(根据需要替换model_name
和attribute_name
以及验证密钥(。
i18n-debug
gem 对于调试 i18n 问题也很方便。