Как заставить Rails отказаться от флеш-сообщений при переходе на Angularjs?

В настоящее время я занимаюсь разработкой сайта, в котором используется одностраничное js-приложение на чисто английском языке, поддерживаемое rails. Единственное, что до сих пор использует виды rails - это страницы устройства для входа в систему, сброса пароля и т. Д. После входа в систему я пересылаю их на angularjs url. Однако, когда пользователь выходит из системы, он возвращается на страницу входа в rails, где видит очень устаревшее флеш-сообщение.

Я думал, что я могу просто сделать Angular сделать контроллер $ ping to rails, который заставляет rails делать flash.clear(), Но это не похоже на работу. Когда я выхожу, последнее разработанное сообщение все еще там.

1 ответ

Решение

Я бы порекомендовал очистить хэш внутри вашего контроллера приложений, если это не контроллер devise, так что вам не нужно делать для этого дополнительный вызов http rest. Вот что вы можете сделать

в вашем application_controller.rb добавьте перед фильтром, который очищает флэш, если это не контроллер devise:

before_filter :discard_flash, :unless => :devise_controller?

private

def discard_flash
  flash.discard              # discard the entire flash at the end of the current action
  flash.discard(:warning)    # discard only the "warning" entry at the end of the current action
end

теперь, когда пользователь взаимодействует с вашим приложением, объект flash будет отброшен, если он не является контроллером devise, поэтому вы все равно будете показывать сообщения flash, если пользователь вводит неверный пароль... если пользователь успешно выполняет вход и нажимает контроллер non devise, тогда Flash-объект будет сброшен. для ознакомления с API, пожалуйста, посмотрите следующие ссылки: http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html и http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers

Другие вопросы по тегам