Flash не очищается при использовании исключения - PullRequest
0 голосов
/ 13 ноября 2018

Итак, в нашем приложении Rails мы используем пользовательские ошибки, выполняя: config.exceptions_app = self.routes

и

%w[401 403 404 500].each do |code|
  get code, to: 'errors#show', defaults: { code: code }
end

Мы также используем Devise для нашей аутентификации.

Мы заметили странный крайний случай, когда пользователь входит в систему и показывает флэш-сообщение о успешном входе в систему, но сразу же обнаруживает ошибку, когда отображается вспышка, но если пользователь обновляет страницу, флэш-память будет отображаться снова и снова. снова и никогда не очищается.

Если они посещают другую страницу, на которой нет ошибки, они снова увидят флэш-память (потому что она не была очищена), но затем удалятся успешно. Так что похоже, что exceptions_app как-то обходит очистку вспышек в Rails ...

Чтобы исправить это, мы сделали:

class ErrorsController < ApplicationController
  def show
    flash.clear # clear all flashes
    render params[:code].to_s, status: params[:code]
  end
end

Итак, мы устраняем ошибки, чтобы потом их больше не видеть ...

Есть идеи, почему это происходит? Это ошибка в Rails в приложении exceptions_app?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...