我正在尝试自定义我的设计错误消息,但属性名称始终包含在消息中。
我已经更改了我的en.yml文件:
en:
activerecord:
errors:
models:
user:
attributes:
password:
blank: "Error"
full_messages:
format: "%{message}"
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
因此,例如在上面的代码中显示的错误消息是 “密码错误”,当我只想显示“错误”
答案 0 :(得分:1)
你应该使用
en:
errors:
format: "%{message}"
答案 1 :(得分:1)
您正在设计帮助器的重写full_messages
中调用devise_error_messages!
方法。
full_messages
方法会将attribute name
添加到验证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
请参阅我对this SO question的回答以获得更好的主意。