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

标签 ruby-on-rails ruby-on-rails-3 twitter-bootstrap flash-message

我正在尝试在 Controller 中设置闪光通知,但似乎我只能定义:notice。当我尝试定义 :errors 或 flash[:errors] 时,我收到了一堆错误。我目前正在使用此功能,但所有消息显然都是通知类型,而不是错误或警告。我想知道如何设置错误或警告而不是通知。我正在使用 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 的 flash 助手 gem 。您可以自己设置代码并查看一切如何工作,而不是使用帮助程序。

以下是我如何使用 Twitter Boostrap 设置 Rails flash 消息。

Rails 使用 :notice 和 :alert 作为 flash 消息键。 Twitter Bootstrap 提供了一个基类 .alert 以及附加类 .alert-success 和 .alert-error (请参阅有关警报的 Bootstrap 文档)。需要进行一些解析才能获得 Rails“通知”消息,并使用 Twitter Bootstrap“警报成功”样式进行样式设置。任何其他消息,包括 Rails“警报”消息,都将采用 Twitter Bootstrap“警报错误”样式。

默认情况下,Twitter Bootstrap 对 .alert-success 应用绿色背景,对 .alert-error 应用红色背景。 Twitter Bootstrap 提供了带有蓝色背景的第三类 .alert-info。通过一些技巧,就可以创建一个带有自定义名称的 Rails flash 消息,例如 :info,它将与 Bootstrap .alert-info 类一起显示。然而,明智的做法是坚持仅使用“警报”和“通知”的 Rails 惯例。 Rails 的早期版本使用“error”,但当前的做法是使用“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 %>

以及在 Controller 中设置两个不同的闪存消息的示例:

class VisitorsController < ApplicationController

  def new
    flash[:notice] = 'Welcome!'
    flash[:alert] = 'My birthday is soon.'
  end

end

这个例子来 self 写的一篇深入的文章:

<强> Twitter Bootstrap and Rails

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

关于ruby-on-rails - 如何使用 Twitter Bootstrap Rails gem 定义 Flash 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931534/

相关文章:

html - Rails/Bootstrap/css/响应式图像尺寸小

html - 在具有百分比偏移量的相对 div 内显示固定 div [SAFARI bug]

ruby-on-rails - 如何在 Rails 的特定时区安排工作人员的时间?

ruby - 如何删除 Rails 中的所有 Facebook 应用程序请求?

ruby-on-rails - 如何从模型内部检查 ActiveRecord 中是否存在关联?

ruby-on-rails - form_for未定义的方法 `model_name'错误

ruby-on-rails - `after_create` 和 `after_save` 有什么区别,什么时候使用哪个?

javascript - 以向导形式传递数据而无需在 MVC 中回发

ruby-on-rails - 使用 `class_attribute` 和 `Hash` 的正确方法

ruby-on-rails - Capistrano 使用 sudo 执行命令,尽管它已关闭