错误禁止此用户被保存:

时间:2014-05-25 02:56:07

标签: html ruby-on-rails ruby forms devise

我一直有一个我无法解决的问题

enter image description here

我无法弄清楚如何摆脱3 error prohibited this user from being saved: 我想要显示的只是子弹中的错误。关于如何配合这个的任何想法?顺便说一下,我正在使用Devise。

3 个答案:

答案 0 :(得分:4)

  

我无法弄清楚如何摆脱禁止此用户的3错误   从被保存

我们覆盖devise助手,让我们对我们希望展示的错误进行最终控制。 Here is a helpful resource向您展示如何实现此目标

-

<强>辅助

根据Buck Doyle&amp;的回答附加资源,您可能希望这样做:

#app/helpers/devise_helper.rb
module DeviseHelper
  def devise_error_messages!
     resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
  end
end

这样您就可以更改devise views以包含devise_error_messages!方法:

#app/views/devise/registrations/new.html.erb
<%= devise_error_messages! %>

答案 1 :(得分:2)

设计错误消息来自对devise_error_messages!的调用,该调用位于devise/app/helpers/devise_helper.rb中的帮助程序中。我通过运行bundle open devise并查看视图来发现这一点。表单视图调用该辅助方法。

您可以将此代码放在初始化程序中以覆盖它:

module DeviseHelper
  def devise_error_messages!
    return "" if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join

    html = <<-HTML
    <div id="error_explanation">
      <ul>#{messages}</ul>
    </div>
    HTML

    html.html_safe
  end
end

如果您与original进行比较,您会看到我刚刚删除了构造常规错误消息的代码以及包含它的h2

另一个选项是在gem之外的duplicate the views,然后您可以更精细地自定义它们。您可以运行它,然后编辑生成的视图:

rails generate devise:views

答案 2 :(得分:0)

老实说,最便宜的方法(虽然技术上删除标题)只是在CSS中添加以下内容:

#error_explanation h2 {
  display: none;
}