我正在使用Devise进行身份验证,登录表单使用Flash通知而不是表单错误来显示登录时的任何问题。但我想突出显示相关错误的相应表单字段,如通常在rails表单中发生的那样。有谁知道怎么做?
答案 0 :(得分:1)
devise 1.1.5的默认设计错误函数可以在设计gem中找到:
设计-1.1.5 /应用/助手/ 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 = "#{pluralize(resource.errors.count, "error")} prohibited this #{resource_name} from being saved:"
html = <<-HTML
<div id="error_explanation">
<h2>#{sentence}</h2>
<ul>#{messages}</ul>
</div>
HTML
html.html_safe
end
end
如果您希望它的行为不同,我想您可以覆盖此模块/函数。
答案 1 :(得分:0)
根据您的Rails版本(3之前或之前),您可以使用:
<%= f.error_messages_for :model %>
3.0之前的Rails版本使用此代码来处理和格式化错误。在Rails 3中,这种方法已被弃用。您需要安装此plugin才能使用上面的erb代码。
您可以在this asciicast的“新功能”一章中阅读有关此更改的更多详细信息。
This tutorial涵盖了基于设计和cancan建立身份验证系统的整个过程。
答案 2 :(得分:0)
错误存储在地图中:
resource.errors
如果您的表单字段名为:email
,则可能会出现以下相关错误:
resource.errors[:email]