Rails 3闪烁通知样式

时间:2013-01-15 23:52:12

标签: ruby-on-rails ruby-on-rails-3.1 ruby-on-rails-3.2

我使用twitter bootstrap来设计我的应用程序。

这是我用于定义flash msg的控制器操作:

def generate_rating_set
  redirect_to "/", :flash => { :notice => "New Set Successfully Created." }
end

在我看来

<div class="alert alert-success"><%= flash[:notice] %></div>

和我的css

.alert {
   font-weight: bold;
   -moz-border-radius: 4px 4px 4px 4px;
   -webkit-border-radius: 4px 4px 4px 4px;
   border-radius: 4px 4px 4px 4px;
   margin-bottom: 18px;
   padding: 12px 25px 12px 24px;
   -moz-box-shadow: 3px 3px 1px 1px #CCCCCC;
   -webkit-box-shadow: 3px 3px 1px 1px #CCCCCC;
   box-shadow: 3px 3px 1px 1px #CCCCCC;
}
.alert-success {
   background-color: #66E167;
   border-color: #D6E9C6;
   width: 280px;
   color: black;
   padding-top: 20px;
}

闪存消息按预期显示,但始终显示css样式。如何隐藏样式以仅在显示flash消息时显示。

2 个答案:

答案 0 :(得分:4)

<% if flash[:notice] -%>
  <div class = "alert alert-success"><%= flash[:notice] %></div>
<% end %>

答案 1 :(得分:4)

这是我用来显示我的flash消息的助手:

def show_flash(options = {})
    output = ActiveSupport::SafeBuffer.new

    [:alert, :notice].each do |message|
        output << content_tag(:p, class: [message, options[:class]], tabindex: '0') do
            flash[message]
        end if flash[message].present?

        flash[message] = nil
     end

     output
end

关键是,如果没有,则不希望显示flash消息的容器。