Rails 完整错误消息而不带属性



我无法摆脱错误消息中的属性。(我想知道为什么这不是默认行为(

控制器

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_nameattribute_name以及验证密钥(。

i18n-debuggem 对于调试 i18n 问题也很方便。

相关内容

  • 没有找到相关文章

最新更新