2011-12-05 41 views
7

Rails 3.1 and Devise 1.5 question.Rails 3.1 Diseñar Cómo cambiar CSS de mensaje Flash De aviso al éxito?

estoy usando el siguiente código para mostrar mensajes flash en mi diseño:

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

Me gustaría cambiar la clase css para algunos de mis mensajes de confirmación de notificación para el éxito, pero yo no' Sé dónde anular o cambiar la clave porque no sé dónde está establecida.

¿Alguien puede señalarme en la dirección correcta?

Gracias!

+1

Puede editar el texto de idear mensajes flash habilitando i18n y modificando la configuración regional predeterminada. Pero no creo que pueda cambiar fácilmente si se agregan como aviso o éxito ... https://github.com/plataformatec/devise/blob/master/config/locales/en.yml. Una forma muy sucia sería agregar html en los mensajes y modificar su CSS para tener esto en cuenta ... – Robin

Respuesta

1

Así que la manera de hacer esto es editar los controladores de inventar.

Al instalar Diseñar a través de la instalación normal no creo que instalar los controladores (por lo menos no para mí).

Así que primero debe agregar manualmente los archivos de los controladores y ponerlos en su proyecto en el mismo lugar: https://github.com/plataformatec/devise/tree/master/app/controllers/devise

Una vez que tenga los archivos en su proyecto, vaya al archivo "sessions_controller.rb".

Uno líneas 16 & 25, debería ver el código:

set_flash_message :notice, :signed_in 

y

set_flash_message :notice, :signed_out 

Sólo tiene que cambiar ": Aviso" a ": el éxito"

Esperanza ¡eso funciona!

+0

Mi proyecto arroja un error en las líneas que cambié. ¿Hay algo más que deba hacer aparte de poner los archivos en una carpeta llamada idear en la carpeta de controladores? – jmosesman

0

la clase CSS se está estableciendo el argumento :class. Para agregar una clase de notice (o success, etc.), sólo cambia su llamada al siguiente:

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

Esto agregaría una clase de aviso a cada mensaje flash, que no es lo que él quiere. – Robin

0

Me encontré con este problema porque estoy usando la gema bootstrap-sass, que usa una estructura de clase completamente diferente para los mensajes flash. Tomé la ruta de resolver esto con sass en lugar de meterme con el dispositivo (la herencia de sass es increíble :).

Por lo tanto, rinden los mensajes flash en app/view/layouts/application.html.haml:

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

Y, añado una regla simple para app/assets/stylesheets/custom.css.scss para obtener mensajes flash de Idear trabajo:

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

eso es todo! ahora flash[:alert] tiene el mismo estilo que el flash[:warning] de bootstrap.

Cuestiones relacionadas