rails not gema función español ejemplos cuál could ruby-on-rails devise

ruby-on-rails - not - devise rails español



Devise/Rails-¿Cómo eliminar un mensaje flash en particular?(Firmado con éxito) (8)

¡De acuerdo!

Como dijo Shingara, defino una cadena vacía en devise.en.yml

sessions: signed_in: ''''

y también cambio un poco la siguiente línea (provista por nifty-generators):

<% flash.each do |name, msg| %> <%= content_tag :div, msg, :id => "flash" if msg.length > 0 %> <% end %>

De esa manera, mi CSS no aparece.

Usando Devise, me gustaría saber si hay una forma de eliminar un mensaje flash en particular. (Firmado con éxito).

Me importa otro mensaje en la vista, por lo que es solo para el que está registrado y el que está desconectado. ¿Tuve que sobrescribir el controlador o hay otra forma?

¡Gracias!


Cadena vacía en el archivo de configuración regional (como se sugiere arriba) pero también agregue el siguiente fragmento de CSS para ocultar (en lugar de monkeying con sus vistas de flash)

.flash.alert:empty { display: none; }


Creo que el dispositivo ahora entiende que si cambia el mensaje de error en config/locals/devise.en.yml a una cadena vacía, automáticamente lo ignorará. Al menos eso es lo que funcionó conmigo.


Desde mi punto de vista, no veo el punto de vaciar una traducción de cadenas, cuando puedes modificar fácilmente cómo está funcionando el controlador. Supongo que de esta manera es mucho más correcto y satisfactorio.

Una mejor respuesta podría ser anular el método de destrucción en sessionController.

Simplemente crea un archivo ubicado en: app / controllers / sessions_controller.rb

Como puede ver, comentamos la línea que crea el mensaje flash.

class SessionsController < Devise::SessionsController # DELETE /resource/sign_out def destroy signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)) #set_flash_message :notice, :signed_out if signed_out && is_flashing_format? yield if block_given? respond_to_on_destroy end end


Otra forma es si anula el controlador Devise, en la acción de creación, coloque este código, que borra el mensaje flash:

class MyDevise::SessionsController < Devise::SessionsController # POST /resource/sign_in def create super flash.delete(:notice) end # DELETE /resource/sign_out def destroy super flash.delete(:notice) end end

esto fue respondido en esta otra pregunta SO. Para una publicación de blog sobre cómo anular el controlador Devise, vea mi publicación en el blog


Otra forma flexible de hacerlo es deshacer el aviso después de la acción:

class SessionsController < Devise::SessionsController after_action :remove_notice, only: :destroy private def remove_notice flash[:notice] = nil end end

Con esta solución, puede agregar condiciones para eliminar o no el aviso.


Puede hacer esto, cambie amablemente el tipo de condición y el tipo de flash en consecuencia.

flash.delete (: alerta) si flash [: alerta] == "Debe iniciar sesión o registrarse antes de continuar." @drivers = params [: keyword] .blank? ? []: Driver.find (params [: palabra clave])

Puedes hacerlo antes del filtro.


Usted simplemente lo define como una cadena vacía en su archivo local. En este caso, no puedes ver nada.