属性名称显示Devise错误 [英] Attribute name showing on Devise Error
问题描述
我正在尝试自定义我的设计错误消息,但属性名称始终包含在消息中。
I'm trying to customize my devise error messages however the attribute name is always being included on the message.
我已经更改了我的en.yml文件:
I've already changed my en.yml file:
en:
activerecord:
errors:
models:
user:
attributes:
password:
blank: "Error"
full_messages:
format: "%{message}"
devise_helper.rb
devise_helper.rb
module DeviseHelper
def devise_error_messages!
return "" if resource.errors.empty?
messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
sentence = I18n.t("errors.messages.not_saved",
count: resource.errors.count,
resource: resource.class.model_name.human.downcase)
html = <<-HTML
<div id="error_explanation">
<h2>#{sentence}</h2>
<ul>#{messages}</ul>
</div>
HTML
html.html_safe
end
end
所以例如上面的代码,当我只想显示错误
So for example on the code above the error message that displays is "Password Error" when I only wanted to display "Error"
推荐答案
您在重写的 devise_error_messages中调用
full_messages
/ code>你的设计助手。
full_messages
方法将属性名称
添加到验证错误消息
。
You are calling full_messages
method in the overridden devise_error_messages!
of your devise helper.
full_messages
method prepends attribute name
to the validation error message
.
替换
messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
与
messages = resource.errors.messages.map { |attr,msg| content_tag(:li, msg.join(', ')) }.join
这个SO问题得到一个更好的主意。
See my answer for this SO question to get a better idea.
这篇关于属性名称显示Devise错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!