属性名称显示Devise错误 [英] Attribute name showing on Devise Error

查看:131
本文介绍了属性名称显示Devise错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试自定义我的设计错误消息,但属性名称始终包含在消息中。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆