您正在使用 seyhunak 的twitter-bootstrap-rails gem 中的 flash 助手。您可以自己设置代码并查看一切是如何工作的,而不是使用帮助程序。
下面是我使用 Twitter Boostrap 设置 Rails 闪存消息的方法。
Rails 使用 :notice 和 :alert 作为 flash 消息键。Twitter Bootstrap 提供了一个基类 .alert 以及附加类 .alert-success 和 .alert-error(请参阅 Bootstrap 警报文档)。需要进行一些解析才能获得使用 Twitter Bootstrap “alert-success” 样式设置样式的 Rails “通知”消息。任何其他消息,包括 Rails 的“警报”消息,都将使用 Twitter Bootstrap 的“警报错误”样式。
默认情况下,Twitter Bootstrap 为 .alert-success 应用绿色背景,为 .alert-error 应用红色背景。Twitter Bootstrap 提供了蓝色背景的第三类 .alert-info。稍加修改,就可以创建一个带有自定义名称的 Rails 闪存消息,例如 :info,它将与 Bootstrap .alert-info 类一起显示。然而,坚持使用“alert”和“notice”的 Rails 惯例是明智的。早期版本的 Rails 使用“错误”,但当前的做法是使用“警报”而不是“错误”。
您可以在应用程序布局文件中包含直接显示 Flash 消息的代码,也可以创建部分代码。这是一个带有部分的示例。
首先,应用程序布局中的内容:
# app/views/layouts/application.html.erb
.
.
.
<%= render 'layouts/messages' %>
.
.
.
接下来,包含在应用程序布局中的部分:
# app/views/layouts/_messages.html.erb
# Rails flash messages styled for Bootstrap 3.0
# works with Rails 4.0 or Rails 4.1
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name.to_s == 'notice' ? 'success' : 'danger' %>">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
以及在控制器中设置两个不同的闪存消息的示例:
class VisitorsController < ApplicationController
def new
flash[:notice] = 'Welcome!'
flash[:alert] = 'My birthday is soon.'
end
end
这个例子来自我写的一篇深入的文章:
Twitter Bootstrap 和 Rails
有关容纳四种不同闪存消息类型(成功、错误、警报、通知)的替代方案,请参阅使用 Twitter Bootstrap的 Rails 闪存消息示例。