Подтвердить что ты не робот

Flash-сообщение в перенаправлении не работает

В моем контроллере есть следующее:

redirect_to signin_path, :notice => "The email is already registered"

На мой взгляд, у меня

<%= flash[:notice] if flash[:notice] %>

Но флэш-сообщение не появляется.

Однако, если я делаю следующее в контроллере

flash[:notice] = "There is already an acount for this email. Please Login to create your board."
redirect_to signin_path

Он работает. В чем причина, почему первая не работает?

4b9b3361

Ответ 1

Сделайте несколько хвостов в ваших журналах и посмотрите, не перенаправлены ли вы на несколько действий перед рендерингом. Если это так, вероятно, вспышка не будет храниться достаточно долго, чтобы перейти к представлению, в котором оно наконец отображается.

Хорошо расположенный flash.keep(:notice) должен сделать трюк.

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

Ответ 2

простой, но эффективный:

изменить ApplicationController < ActionController:: Base следующим образом:

alias :std_redirect_to :redirect_to
def redirect_to(*args)
   flash.keep
   std_redirect_to *args
end

Ответ 3

Лучший подход - написать эту строку в файле views/layouts/application.html.erb

<%= notice %>
<%= alert %>

и напишите

layout 'application' в контроллерах

Ответ 4

В вашем контроллере используйте:

redirect_to signin_path, :notice => "There is already an acount for this email. Please Login to create your board."

В вашем макете приложения используйте:

<%= notice %>