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

相關問題