问题
Rails 3.1 and Devise 1.5 question.
I'm using the following code to display flash messages in my layout:
<% flash.each do |key, message| %>
<%= content_tag(:div, message, :class => "flash #{key}") %>
<% end %>
I'd like to change the css class for some of my confirmation messages from notice to success, but I don't know where to override or change the key because I don't know where it's set.
Can anybody point me in the right direction?
Thanks!
回答1:
So the way to do this is to edit the devise controllers.
When you install Devise through the normal installation I don't think it install the controllers (at least it didn't for me).
So first you should manually add the controller files and put them into your project in the same location: https://github.com/plataformatec/devise/tree/master/app/controllers/devise
Once you have the files in your project, go to the "sessions_controller.rb" file.
One lines 16 & 25, you should see the code:
set_flash_message :notice, :signed_in
and
set_flash_message :notice, :signed_out
You just need to change ":notice" to ":success"
Hope that works!
回答2:
The css class is being set by the :class
argument. To add a class of notice
(or success
, etc.), just change your call to the following:
<%= content_tag(:div, message, :class => "flash #{key} notice") %>
回答3:
I ran into this problem because I'm using the bootstrap-sass gem which uses a whole different class structure for flash messages. I took the route of solving this with sass rather than messing with devise at all (sass inheritance is awesome:).
So, I render the flash messages in app/view/layouts/application.html.haml
:
%div.container
- flash.each do |key, value|
= content_tag(:div, value, class: "alert alert-dismisable alert-#{key}")
And, I add a simple rule to app/assets/stylesheets/custom.css.scss
to get Devise's flash messages working:
/* Style Devise Flash messages like Bootstrap */
.alert-alert {
@extend .alert-warning;
}
That's it! now flash[:alert]
is styled just like bootstrap's flash[:warning]
.
来源:https://stackoverflow.com/questions/8387135/rails-3-1-devise-how-to-change-flash-message-css-from-notice-to-success