2011-04-27 57 views

回答

31

閃光燈是Rails機制,以跨越2個請求仍然存在的一些信息。您可以在一個請求中設置閃存哈希中的某些內容,並在您從同一客戶端收到的下一個請求中提供。

由於flash只是一個「散列」,因此您可以像使用它一樣使用它。這意味着您可以提供您的首選密鑰(:alert /:error /:notice),並將您希望的任何消息字符串作爲值。

什麼或何時使用的語義:alert /:error /:notice是真的由您來管理。話雖如此,一般的最佳做法是使用:注意事情是OKAY並以綠色色調顯示,並在事情不是OKAY時使用:錯誤並以紅色色調顯示。如果您想要使用以下內容,則完全可以:警告您的網絡應用中的其他類型的消息。我以前用它來提供黃色色調的信息。

2

它們只是不同的分類。我主要使用:error:notice。注意我使用信息性消息(「您的密碼已更改」,「已保存的更改」等)。我保留:error關鍵的事情/問題(「您的密碼不匹配」,「登錄失敗」等)

6

這只是一個分類。它產生的股利#error.error或DIV#notice.notice你連接你想要的邏輯之上

豆蔻樣本:

.alert, .error, .notice, .success { padding:.8em 0; margin:0 0 2px 0; border:2px solid #ddd; font-size:1.6em; text-align:center;} 

.error { background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4; } 
.notice { background:#FFF6BF;color:#514721;border-color:#FFD324; } 
.success { background:#DDFCD5;color:#000;border-color:#44A815; } 
.alert { background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4; } 

.error a {color:#8a1f11;} 
.notice a {color:#514721;} 
.success a {color:#264409;} 
.alert a {color:#8a1f11;} 
+1

雖然選擇的答案是更多解釋有關使用三種類型的提示信息的目的,我想你對生成的標記的解釋,它可以很容易地與改進的用戶界面的CSS樣式相關聯。謝謝。 – 2011-04-27 17:51:20

0

我也使用:message類也傳遞在我的異常處理程序中捕獲的StandardError消息。使用2或3個類可以顯示多達多條消息以響應單個事件或結果,每個消息傳達結果的不同方面,例如,信息,基於應用程序知道的錯誤和基於系統知道的錯誤。

8

:alert:notice在功能上與您發明的其他鍵不同。 FlashHash提供了兩種便利訪問器:flash.alert,flash.notice。 Rails對這兩款產品的偏好進一步提升至redirect_to,該產品只接受:alert:notice:flash

但是,邊緣Rails的commit in July 2012允許添加其他Flash類型的權限。下面是軌道4,5添加自定義閃存類型的例子:

# app/controllers/application_controller.rb 
class ApplicationController; add_flash_types(:error, :annoyance); end 

# app/controllers/monopoly_controller.rb 
class MonopolyController < ApplicationController 
    def chance 
    ... 
    redirect_to haha_path, annoyance: "Go directly to jail. Do not pass Go. Do not collect $200." 
    end 
end 

# app/views/haha/index.html.erb 
<%= annoyance %>