我正在尝试自定义activerecords错误消息。这是我所拥有的:
我的错误消息部分文件app / views / devise / shared / _error_messages.html.erb:
<% if resource.errors.any? %>
<div id="error_explanation" class="verd14 pl-2 pr-2">
<%= I18n.t("errors.messages.not_saved",
count: resource.errors.count,
resource: resource.class.model_name.human.downcase)
%>
<ul>
<% resource.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
我的YML文件:
pl:
activerecord:
errors:
models:
user:
attributes:
email:
blank: "blah blah blah"
但是显示的错误消息包含更多内容。它显示:
用电子邮件等等等等
那是为什么?为什么在翻译开始时显示“电子邮件”字样,以及如何在不创建我自己的验证的情况下摆脱此额外的“电子邮件”字符串?
这是我在阅读stackoverflow上连接的所有内容时发现的:
ActiveModel :: Errors#full_messages将属性名称添加到 使用分隔符的错误消息,该分隔符将从 errors.format(默认为“%{attribute}%{message}”)。
但是我不知道如何格式化我的YML文件。请支持
答案 0 :(得分:1)
“为什么?为什么在翻译开始时显示'Email'字?”
这就是full_messages
方法默认工作的方式(默认格式为"%{attribute} %{message}"
)。
您可以使用以下任何I18n键进行更改:
activemodel.errors.models.user.attributes.email.format
activemodel.errors.models.user.format
errors.format
查看文档以获取更多信息:https://apidock.com/rails/v6.0.0/ActiveModel/Errors/full_message
编辑:您的yml文件中的内容如下:
pt:
activemodel:
errors:
user:
attributes:
email:
blank: 'bla bla bla'
format: '%{message}'
答案 1 :(得分:0)
<% resource.errors.values.each do |message| %>
<li><%= message[0] %></li>
以我的情况工作