如何使用Twitter Bootstrap Rails gem定义Flash通知
我试图在控制器中设置闪存通知,但似乎我只能定义:通知。 当我尝试定义:errors或flash [:errors]时,我遇到了一堆错误。 我目前有这个工作,但所有的消息显然是一个通知类型,而不是错误或警告。 我想知道如何设置错误或警告而不是通知。 我正在使用rails 3.2和twitter bootstrap rails gem
在application.html.erb中
在manuals_controller.rb
class ManualsController < ApplicationController def create respond_to do |format| format.html { redirect_to root_url, notice:'MyManual was successfully created.' } end end end
你正在使用seyhunak的twitter-bootstrap-rails gem中的flash助手。 您可以自己设置代码并查看一切是如何工作的,而不是使用帮助程序。
以下是我使用Twitter Boostrap设置Rails Flash消息的方法。
Rails使用:notice和:alert作为flash消息键。 Twitter Bootstrap提供了一个基类.alert以及其他类.alert-success和.alert-error(请参阅警报的Bootstrap文档)。 要使用Twitter Bootstrap“alert-success”样式设置Rails“notice”消息,需要进行一些解析。 任何其他消息,包括Rails“警报”消息,将使用Twitter Bootstrap“alert-error”样式进行样式设置。
默认情况下,Twitter Bootstrap将绿色背景应用于.alert-success,将红色背景应用于.alert-error。 Twitter Bootstrap提供带有蓝色背景的第三类.alert-info。 通过一点点黑客攻击,可以创建一个带有自定义名称的Rails flash消息,例如:info,它将与Bootstrap .alert-info类一起显示。 但是,坚持使用仅使用“alert”和“notice”的Rails约定是明智的。早期版本的Rails使用“错误”,但目前的做法是使用“alert”而不是“error”。
您可以包含直接在应用程序布局文件中显示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) %> <%= content_tag :div, msg, :id => "flash_#{name}" %> <% end %> <% end %>
以及在控制器中设置两个不同的Flash消息的示例:
class VisitorsController < ApplicationController def new flash[:notice] = 'Welcome!' flash[:alert] = 'My birthday is soon.' end end
这个例子来自我写的一篇深入的文章:
Twitter Bootstrap和Rails
有关容纳四种不同Flash消息类型(成功,错误,警报,通知)的替代方法,请参阅使用Twitter Bootstrap的Rails Flash消息示例。