我使用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消息时显示。
答案 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消息的容器。