2

Twitterブートストラップを使用してアプリのスタイルを設定しています。

これは、フラッシュメッセージを定義するために使用されるコントローラーアクションです。

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スタイルは常に表示されています。フラッシュメッセージが表示されているときにのみ表示するようにスタイルを非表示にするにはどうすればよいですか。

4

2 に答える 2

4
<% if flash[:notice] -%>
  <div class = "alert alert-success"><%= flash[:notice] %></div>
<% end %>
于 2013-01-15T23:54:12.530 に答える
4

フラッシュメッセージを表示するために使用するヘルパーは次のとおりです。

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

重要なのは、フラッシュメッセージがない場合は、フラッシュメッセージのコンテナを表示したくないということです。

于 2013-01-15T23:56:32.027 に答える