使用Devise进行授权我将其配置为通过电子邮件或登录进行授权。 已删除Validatable驱动程序。我在我的用户模型中写了验证。 我还在app / helpers / devise_helper.rb中覆盖了设计助手:
module DeviseHelper
def devise_error_messages!
return "" if resource.errors.empty?
errors = Array.new
resource.errors.each do |field, msg|
errors.push(msg)
end
flash[:alert] = errors
end
end
在视图中(devise / registrations / new.html.erb)我替换
<%= devise_error_messages! %>
到
<% devise_error_messages! %>
所以,问题。 如果字段为空(或其他),则会显示闪存错误。然后我转到主页,错误再次显示。它只出现在注册界面中。当授权没事的时候。 请帮忙。
更新
部分视图(_block_errors.html.erb):
<% flash.each do |name, msg| %>
<% if msg.class == Array %>
<% msg.each do |message| %>
<%= content_tag :p, message, :class => "#{name}" %>
<% end %>
<% else %>
<%= content_tag :p, msg, :class => "#{name}" %>
<% end %>
<% end %>
在布局中,它被称为:
<%= render 'layouts/block_errors' %>
解决!
在重载方法devise_error_messages中!需要替换字符串:
flash[:alert] = errors
到
flash.now[:alert] = errors
希望它可以帮助任何人:)
答案 0 :(得分:3)
您确定在应用中的其他任何位置都没有显示alert
吗?
应该看起来像这样
<% if flash[:alert] %>
<p id="notice"><%= flash[:alert] %></p>
<% end %>
答案 1 :(得分:1)
我通过删除index.html.erb文件中的<p id="notice"><%= notice %></p>
来解决问题