Rails – devise – login时出现错误消息?

如何使ferror_messages在这里工作,或者我应该使用闪光?
如果是这样,那么应该在sessions_controller中重写什么?

<h2>Create an account</h2> <% form_for resource_name, resource, :url => registration_path(resource_name) do |f| %> <%= f.error_messages %> <p> <%= f.label :email %><br /> <%= f.text_field :email, :class => :big %> </p> <p> <%= f.label :password %><br /> <%= f.password_field :password, :class => :big %> </p> <p> <%= f.label :password_confirmation %><br /> <%= f.password_field :password_confirmation, :class => :big %> </p> <p><%= f.submit "Create", :class => :submit %></p> <% end %> 

PS。 f.error_messages创build一个帐户完全正常。

诚然,有点hacky,但我使用这个助手(app / helpers / devise_helper.rb)抢闪烁,并使用这些如果设置,则默认为resource.errors

 module DeviseHelper def devise_error_messages! flash_alerts = [] error_key = 'errors.messages.not_saved' if !flash.empty? flash_alerts.push(flash[:error]) if flash[:error] flash_alerts.push(flash[:alert]) if flash[:alert] flash_alerts.push(flash[:notice]) if flash[:notice] error_key = 'devise.failure.invalid' end return "" if resource.errors.empty? && flash_alerts.empty? errors = resource.errors.empty? ? flash_alerts : resource.errors.full_messages messages = errors.map { |msg| content_tag(:li, msg) }.join sentence = I18n.t(error_key, :count => errors.count, :resource => resource.class.model_name.human.downcase) html = <<-HTML <div id="error_explanation"> <h2>#{sentence}</h2> <ul>#{messages}</ul> </div> HTML html.html_safe end end 

尝试把这些放在你的布局中:

 <%= content_tag(:div, flash[:error], :id => "flash_error") if flash[:error] %> <%= content_tag(:div, flash[:notice], :id => "flash_notice") if flash[:notice] %> <%= content_tag(:div, flash[:alert], :id => "flash_alert") if flash[:alert] %> 

deviselogin行动设置闪光消息,而不是模型错误。

尽pipe这个职位的年龄,我想分享一个解决scheme,以帮助像我自己开始使用Devise时遇到麻烦的人。 为了让事情干燥,我刚刚结束了在我的application.html.erb文件中插入此代码:

 <body> <% flash.each do |key, value| %> <div class="flash <%= key %>"><%= value %></div> <% end %> <%= yield %> </body> 

这也应该做

 <% flash.each do |name, msg| %> <%= content_tag :div, msg, id: "flash_#{name}" %> <% end %> 

创build一个帮手

  # app/helpers/application_helper.rb module ApplicationHelper def flash_class(level) case level when 'info' then "alert alert-info" when 'notice','success' then "alert alert-success" when 'error' then "alert alert-danger" when 'alert' then "alert alert-warning" end end end #view <% flash.each do |key, value| %> <div class="<%= flash_class(key) %> fade in"> <a href="#" class="close" data-dismiss="alert">&times;</a> <%= value %> </div> <% end %>