it-swarm.com.ru

Как отобразить флеш-уведомление Rails при перенаправлении?

У меня есть следующий код в контроллере Rails:

flash.now[:notice] = 'Successfully checked in'
redirect_to check_in_path

Затем в представлении/check_in:

<p id="notice"><%= notice %></p>

Тем не менее, уведомление не отображается. Прекрасно работает, если я не перенаправляю в контроллер:

flash.now[:notice] = 'Successfully checked in'
render action: 'check_in'

Мне нужен редирект, хотя ... а не просто рендеринг этого действия. Могу ли я получить мгновенное уведомление после перенаправления?

56
at.

Удалить ".now". Так что просто напишите:

flash[:notice] = 'Successfully checked in'
redirect_to check_in_path

.Now специально предназначен для использования только при рендеринге, а не при перенаправлении. При перенаправлении .now не должен использоваться.

104
Rebitzele
redirect_to new_user_session_path, alert: "Invalid email or password"

вместо :alert вы можете использовать :notice

для отображения

33
Tauqeer Ahmad

Или вы можете сделать это в одну строку.

redirect_to check_in_path, flash: {notice: "Successfully checked in"}
15
etlds

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

В вашем контроллере:

if my_success_condition
  flash[:success] = 'It worked!'
else
  flash[:warning] = 'Something went wrong.'
end
redirect_to myroute_path

По вашему мнению:

<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %>"><%= value %></div>
<% end %>

Это произведет HTML как:

<div class="alert alert-success">It worked!</div>

Доступные Bootstrap стили предупреждений см. В: http://getbootstrap.com/docs/4.0/components/alerts/

Ссылка: https://agilewarrior.wordpress.com/2014/04/26/how-to-add-a-flash-message-to-your-Rails-page/

4
Jon Schneider

Это тоже будет работать

redirect_to check_in_path, notice: 'Successfully checked in'

4
Seifer

У меня была та же проблема, и ваш вопрос решил мой, потому что я забыл включить в представление/check_in:

<p id="notice"><%= notice %></p>

В контроллере только одна строка:

redirect_to check_in_path, :notice => "Successfully checked in"             
2
Florencio Lugo