我一直有一个我无法解决的问题
我无法弄清楚如何摆脱3 error prohibited this user from being saved:
我想要显示的只是子弹中的错误。关于如何配合这个的任何想法?顺便说一下,我正在使用Devise。
答案 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;
}