ruby-on-rails – 如何使用Twitter Bootstrap Rails gem定义Flash通知

我试图在控制器中设置闪存通知,但似乎我只能定义:通知.当我尝试定义:错误或flash [:错误]我遇到了一大堆错误.我目前有这个工作,但所有的消息显然是通知类型,而不是错误或警告.我想知道如何设置错误或警告,而不是通知.我正在使用rails 3.2和twitter bootstrap rails gem

在application.html.erb中

<%= bootstrap_flash %>

在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宝石的闪光助手.而不是使用帮助器,您可以自己设置代码,看看一切如何工作.

以下是我如何使用Twitter Boostrap设置Rails Flash消息.

Rails使用:通知和:作为闪烁消息键提醒. Twitter Bootstrap提供了一个基类.alert和其他类.alert-success和.alert-error(参见关于警报的Bootstrap文档).需要一点解析才能获得一个Rails“通知”消息,使用Twitter Bootstrap“alert-success”风格进行风格化.任何其他消息(包括Rails“警报”消息)都将使用Twitter Bootstrap“alert-error”风格进行风格化.

默认情况下,Twitter Bootstrap将绿色背景应用于.alert-success,并将红色背景应用于.alert-error. Twitter Bootstrap提供了具有蓝色背景的第三类.alert-info.有一点黑客,可以使用自定义名称创建一个Rails flash消息,例如:info,将显示与Bootstrap .alert-info类.但是,遵循仅使用“警报”和“通知”的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) %>
    <div class="alert alert-<%= name.to_s == 'notice' ? 'success' : 'danger' %>">
      <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</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 and Rails

对于可以容纳四种不同的Flash消息类型(成功,错误,警报,通知)的替代方案,请参阅Rails Flash Messages using Twitter Bootstrap的示例.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...