【发布时间】:2011-09-18 06:21:49
【问题描述】:
使用 Devise 进行授权,我将其配置为通过电子邮件或登录进行授权。 已删除可验证的驱动程序。我在我的用户模型中编写了验证。 我还覆盖了 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
希望它可以帮助任何人:)
【问题讨论】:
标签: ruby-on-rails devise