Итак, в нашем приложении 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?