14

我想在控制器中设置Flash通知,但看起来像我只能定义:notice。当我尝试定义:错误或闪光[:错误]我收到了一堆错误。我目前有这个工作,但所有的消息显然是通知类型,而不是错误或警告。我想知道如何设置错误或警告,而不是通知。我在manuals_controller.rb如何使用Twitter Bootstrap Rails定义Flash通知gem

class ManualsController < ApplicationController 
    def create 
    respond_to do |format| 
     format.html { redirect_to root_url, notice:'MyManual was successfully created.' } 
    end 
    end 
end 
+1

https://gist.github.com/suryart/7418454 –

回答

28

使用您正在使用从seyhunak的twitter-bootstrap-rails宝石闪光帮手application.html.erb

<%= bootstrap_flash %> 

轨道3.2和Twitter的引导轨宝石

。您可以自己设置代码并查看一切是如何工作的,而不是使用助手。

以下是我如何使用Twitter Boostrap设置Rails快讯。

Rails使用:notice和:alert作为flash消息键。 Twitter Bootstrap提供了基类.alert以及其他类.alert-success和.alert-error(请参阅警报的Bootstrap文档)。需要一点解析才能获得Rails“通知”消息,以Twitter Bootstrap“alert-success”风格进行样式化。任何其他消息,包括Rails“alert”消息,都将使用Twitter Bootstrap“alert-error”风格进行样式化。

默认情况下,Twitter Bootstrap将绿色背景应用于.alert-success并将红色背景应用于.alert-error。 Twitter Bootstrap以蓝色背景提供第三类.alert-info。通过一些黑客攻击,可以创建一个带有自定义名称的Rails闪存消息,例如: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) %> 
    <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

对于容纳四个不同的闪存消息类型替代(成功,错误警报,通知),看到的Rails Flash Messages using Twitter Bootstrap一个例子。

+0

当我进行上述更改时收到错误“无法将符号转换为字符串”。感谢您彻底解释您的初步答案。 – barnett

+1

这是我的[Rails Bootstrap](https:// github。com/RailsApps/rails-bootstrap)GitHub上包含Flash消息代码的示例应用程序。这可能有助于克隆该示例并将其作为参考实现进行检查。 –

+0

如果我想让它与ajax一起使用,那么如何? – barnett

相关问题