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

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



Rails Deshabilitar diseñar mensajes flash (6)

¿Cómo puedo deshabilitar todos los mensajes flash de gem de Devise ("inicié sesión con éxito", "cerró la sesión")? Gracias.


Devise incluye un práctico generador para copiar todas las vistas en su proyecto:

rails generate devise:views

De esta forma, puede editar las vistas usted mismo y decidir qué desea guardar o tirar (mensajes flash).


Este trabajo para mí:

# app/controllers/users/sessions_controller.rb class Users::SessionsController < Devise::SessionsController after_action :remove_notice, only: [:destroy, :create] private def remove_notice flash.discard(:notice) #http://api.rubyonrails.org/v5.1/classes/ActionDispatch/Flash/FlashHash.html#method-i-discard end end # add this line in ''config/routes.rb'' devise_for :users, :controllers => { sessions: ''users/sessions'' }

Uso Users::SessionsController pero puede usar SessionsController , tengo solo un modelo de diseño en este ejemplo.

Yo uso flash.discard(:notice) pero puedes usar flash.discard para eliminar otros tipos al mismo tiempo. (descarte del método desde los rieles 3.0)

Prefiero este enfoque, porque la función de la vista no es verificar si el mensaje flash está en blanco. Si tiene un mensaje flash, ¡imprímalo! Si no quiere, no cree mensajes flash ;-)


He podido deshabilitarlos en un controlador dado anulando is_flashing_format? :

def is_flashing_format? false end

Estoy usando Devise 3.5.6


Para Rails 5.0.6, este código funcionará.

app/controllers/sessions_controller.rb

class SessionsController < Devise::SessionsController def new flash.clear super end end

No te olvides de las rutas.

config/routes.rb

devise_for :users, controllers: { sessions: ''sessions'' }


Probablemente la forma más fácil de hacer esto es

  1. Definir cada mensaje como una cadena en blanco
  2. Verifique la longitud de la cadena antes de mostrar un mensaje flash.

En su archivo devise.en.yml , especifique cada mensaje como vacío:

en: errors: messages: not_found: '''' already_confirmed: '''' not_locked: ''''

etc. A continuación, en su diseño, compruebe si hay cadenas de flash en blanco antes de imprimirlas.

<% flash.each do |key, value| %> <%= content_tag :div, value, :class => "flash #{key}" unless value.blank? %> <% end %>


Una respuesta más adecuada para mí fue anular el Controlador de Sesiones Devise como este

class 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 anula de manera segura el método de crear y destruir, eliminando el mensaje flash