Skip to content

Override devise_error_messages! for views

lorddoig edited this page May 22, 2013 · 2 revisions

The devise_error_messages! method is overridden by adding a devise_helper.rb application helper.

The standard implementation (below) can be cut and paste in then tweaked to your requirements. It can also be helpful to define a convenience method to check for their presence in your views:

module DeviseHelper
  def devise_error_messages!
    return "" if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
    sentence = I18n.t("errors.messages.not_saved",
                      :count => resource.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

  def devise_error_messages?
    resource.errors.empty? ? false : true
  end

end

More information at this StackOverflow thread.

Clone this wiki locally