Ruby on Rails的Flash消息 - :alert、:error、:notice和:success是什么?

29

在我的几个控制器中,我使用了重定向和闪存消息。

redirect_to products_url, :notice => "message here", 
redirect_to states_url, :error => "oops!" etc... 
在我的sessions控制器中,当身份验证成功时,我设置了flash [:success] =“welcome!”并重定向到用户页面。 我想在我的其他控制器中能够这样做 :success => “yay!” 这主要是为了美观/一致性目的,但是:notice、alert和error是唯一可用的flash类型吗?我可以添加其他类型吗?我解释清楚了吗? 谢谢!
3个回答

55

我认为,不进行更改的情况下,这已经是你能得到的最接近的结果了:

redirect_to user_path(@user), :flash => { :success => "Message" }

关于友好的flash语法扩展,这里有一些附加说明


13

我刚刚发现在Rails 4中,您可以在应用控制器中注册自定义类型:

class ApplicationController
    ...
  add_flash_types :error, :another_custom_type
end

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def create
    ...
    redirect_to home_path,
      error: "An error message for the user"
  end
end

# app/views/home/index
<%= error %>

功劳归于http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-rails-4-countdown-to-2013


0
如果您想访问基于Bootstrap警报(成功和警告)的不同类型的Flash消息样式,请在您的控制器中:
flash[:success] = "This works!"

而在你的布局文件中(很可能是application.html.erb)

  <% if success.present? %>
      <p class="alert alert-success"><%= success %></p>
  <% end %>

同样的事情也适用于警告和其他 Bootstrap 警报样式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接