如何在重定向时显示 Rails flash 通知?

问题描述 投票:0回答:7
ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4 rails-flash
7个回答
132
投票

删除

.now
。所以就写:

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

.now
专门应该在您只是渲染而不是重定向时使用。重定向时,不能使用
.now


45
投票
redirect_to new_user_session_path, alert: "Invalid email or password"

代替

:alert
,您可以使用
:notice

显示


23
投票

或者你可以在一行中完成。

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

13
投票

这也可以工作

redirect_to check_in_path, notice: 'Successfully checked in'


11
投票

如果您使用 Bootstrap,这将在重定向目标页面上显示格式良好的 Flash 消息。

在您的控制器中:

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/


3
投票

我遇到了同样的问题,你的问题解决了我的问题,因为我忘记包含在 /check_in 视图中:

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

在控制器中,只需一行:

redirect_to check_in_path, :notice => "Successfully checked in"             

0
投票

如果使用操作进行重定向,则操作和 Flash 消息必须作为单独的参数传递。

    redirect_to({ action: 'show'}, notice: 'Successfully checked in')

参考:https://api.rubyonrails.org/classes/ActionController/Redirecting.html#method-i-redirect_to

© www.soinside.com 2019 - 2024. All rights reserved.