ruby on rails flash messages - :alert:error:notice and:success?

时间:2011-09-28 04:28:56

标签: ruby-on-rails controller message alert

在我的几个控制器中,我有重定向/ flash消息

redirect_to products_url, :notice => "message here", 
redirect_to states_url, :error => "oops!" etc... 

然而,在我的会话控制器中,成功进行身份验证后,我有     flash [:success] =“欢迎!”     redirect_to user

我希望能够在我的其他控制器中做类似的事情     :success => “耶!”

这主要用于化妆品/一致性目的,但是:注意,:警告和:错误唯一可用的闪存类型/我可以添加其他类型吗?我有道理吗?

谢谢!

3 个答案:

答案 0 :(得分:53)

我相信如果没有变化,这就像你会得到的那样接近:

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

这里有一些关于友好flash语法添加的additional notes

答案 1 :(得分:10)

我刚刚发现在Rails 4中你可以在app controller中注册自定义类型:

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

答案 2 :(得分:0)

如果要根据引导程序警报(成功和警告)访问不同类型的Flash消息样式,请在控制器中:

flash[:success] = "This works!"

在您的布局中(最有可能是application.html.erb)

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

警告和其他引导警报样式也是如此。