2011-12-05 71 views
7

Rails 3.1和Devise 1.5問題。Rails 3.1設計如何更改Flash消息CSS從通知到成功?

我用下面的代碼在我的佈局中顯示的提示信息:

<% flash.each do |key, message| %> 
     <%= content_tag(:div, message, :class => "flash #{key}") %> 
    <% end %> 

我想更改CSS類一些從通知到我的成功確認消息的,但我不」不知道在哪裏重寫或更改密鑰,因爲我不知道它在哪裏設置。

任何人都可以指向正確的方向嗎?

謝謝!

+1

您可以通過啓用i18n並修改默認語言環境來編輯設計flash消息的文本。但我不認爲你可以輕易改變,如果他們被添加爲通知或成功... https://github.com/plataformatec/devise/blob/master/config/locales/en.yml。一個非常骯髒的方法是在消息中添加html,並修改你的css以將其考慮在內...... – Robin

回答

1

因此,要做到這一點的方法是編輯色器件控制器。

當您通過正常安裝來安裝Devise時,我不認爲它會安裝控制器(至少它不適合我)。

所以首先你應該手動添加控制器文件,並把它們放到你的項目在同一個位置:https://github.com/plataformatec/devise/tree/master/app/controllers/devise

一旦你的文件在您的項目,進入「sessions_controller.rb」文件。

一個線16 & 25,你應該看到代碼:

set_flash_message :notice, :signed_in 

set_flash_message :notice, :signed_out 

你只需要改變 「:注意」 到 「:成功」

希望這樣可行!

+0

我的項目在我改變的行上拋出錯誤。除了將這些文件放在控制器文件夾下名爲devise的文件夾中之外,還有什麼需要做的嗎? – jmosesman

0

css類正在由:class參數設置。要添加一類notice(或success等),只是改變你的電話到以下幾點:

<%= content_tag(:div, message, :class => "flash #{key} notice") %> 
+2

這會爲每個flash消息添加一個notice類,這不是他想要的。 – Robin

0

我遇到了這個問題,因爲我使用了bootstrap-sass gem,它爲閃存消息使用了完全不同的類結構。我採用sass解決這個問題的方法,而不是搞設計(sass inheritance is awesome :)。

所以,我呈現Flash的消息在app/view/layouts/application.html.haml

%div.container 
    - flash.each do |key, value| 
    = content_tag(:div, value, class: "alert alert-dismisable alert-#{key}") 

而且,我添加了一個簡單的規則來app/assets/stylesheets/custom.css.scss得到設計的Flash消息工作:

/* Style Devise Flash messages like Bootstrap */ 
.alert-alert { 
    @extend .alert-warning; 
} 

這就是它!現在flash[:alert]的風格就像引導者的flash[:warning]一樣。