Разработка не отображает сообщения об ошибках входа - PullRequest
6 голосов
/ 09 мая 2011

Я использую devise в своем приложении и не получаю сообщения об ошибках при неудачной попытке входа в систему.

У меня на странице входа в систему есть [: alert] и flash [: alert].

Я много чего пробовал, и когда я удаляю 'protect_from_forgery' из контроллера приложения, я получаю сообщения об ошибках.

Также я использую Cancan в своем приложении, может ли это быть из-за этого? Есть идеи?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Я предполагаю, что проверка подлинности не удалась.Ваши формы отправляют аутентичные_токены с постами?Если удаление protect_from_forgery исправит это, это почти наверняка проблема.

Убедитесь, что все не полученные запросы отправляют параметр authenticity_token со значением, возвращаемым функцией rails form_authenticity_token.Если вы используете form_for в своих представлениях, это должно произойти автоматически.Проверьте ваш HTML, чтобы убедиться, что маркер подлинности в форме должен соответствовать значению, возвращенному методом form_authenticity_token.

1 голос
/ 30 ноября 2011

По общему признанию, немного хакерский, но я использую этот помощник (app / helpers / devise_helper.rb), чтобы захватывать вспышки и использовать их, если установлено, то по умолчанию resource.errors Контроллер сессий Devise, похоже, не использует ошибки модели, а вместо этого использует флэш-оповещения. Это просто на основе помощника, который находится в lib разработки.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...