Флэш-сообщение Rails остается для загрузки двух страниц - PullRequest
64 голосов
/ 19 июня 2009

Я использую флэш-уведомление в приложении Rails со следующим кодом:

flash[:notice] = "Sorry, we weren't able to log you in with those details."
render :action => :new

Флеш-сообщение отображается ожидаемым образом в результате действия «new», но затем на следующей странице также отображается посещение пользователя (что бы это ни было). Он должен показываться только один раз, но что-то заставляет его держаться.

Ответы [ 3 ]

127 голосов
/ 19 июня 2009

Существует два способа решения этой проблемы:

Один должен использовать

flash.now[:notice]

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

Второй должен позвонить

flash.discard(:notice)

в конце запроса.

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

Если вы на самом деле генерируете вспышку на экране шоу, используйте flash.now.

Просмотрите документацию по API Ruby on Rails, чтобы увидеть, как работает хэш Flash

15 голосов
/ 19 июня 2009

Хорошо, я решил это. Чтобы обойти это, используйте:

flash.now[:notice] = "Sorry, we weren't able to log you in with those details."
render :action => :new

Ключевой частью является flash.now [: note] вместо flash [: note].

0 голосов
/ 07 декабря 2018

Или вы можете просто вызвать действие, как это

flash.now[:notice] = "Sorry, we weren't able to log you in with those details."
render 'new' #or render :new
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...