Как заставить 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