2

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

这是我用于定义 Flash 信息的控制器操作:

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;
}

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

4

2 回答 2

4
<% if flash[:notice] -%>
  <div class = "alert alert-success"><%= flash[:notice] %></div>
<% end %>
于 2013-01-15T23:54:12.530 回答
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 消息的容器。

于 2013-01-15T23:56:32.027 回答