2011-08-30 20 views
8

El uso de rieles 3,07 y diseñar 1.1.5carriles - Idear signo de fracaso/autenticación no actualiza gama errores con el mensaje

todo está funcionando bien y como se esperaba, con una excepción. Cuando un usuario intenta iniciar sesión con una contraseña falsa, por ejemplo, idear deniega el intento de inicio de sesión, que es correcto, pero no proporciona un mensaje de error.

Tengo varios métodos de visualización de errores configurados en la aplicación/helpers/devise_helper.rb y estoy usando uno llamado devise_sign_in_error_messages! para la vista de inicio de sesión. Por lo tanto, puedo verificar que la siguiente línea de esa función devuelve una cadena en blanco para errores en este caso: return "" if resource.errors.empty?

Si proporciono un nombre de usuario y una contraseña correctos, el sistema me registra correctamente, por lo que toda la lógica del dispositivo parece correcta, es solo la falta de un mensaje de error que es un misterio.

¿Qué necesito cambiar para ayudar a diseñar pasarme un mensaje de error en el inicio de sesión fallido?

EDIT:

La respuesta es que: a) idear está pegando la respuesta flash b) a pesar de que está en flash, que no está utilizando la clave que se podría esperar

El uso de este poco de código, puedo ver el mensaje:

<% flash.each do |name, msg| %> 
<%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %> 
<% end %> 

Qué me encontré en un puesto diferente, como una respuesta a una pregunta diferente: Another stack overflow post

He intentado hacer salir el flash antes pero no he visto el mensaje porque seguí un poco del código de una publicación de desbordamiento de pila diferente que parece ser insuficiente. Es decir, había intentado:

<%= flash[:message] if flash[:message] 
flash[:warning] if flash[:warning] 
flash[:error] if flash[:error] %> 

Diseñar no está utilizando estas teclas para el mensaje de error de inicio de sesión por lo que este código le conseguirá nada.

Encuentro que el manejo de este dispositivo es inconsistente. Específicamente, si elijo la opción Olvidé mi contraseña e ingresé una dirección de correo falsa, por ejemplo, el error se remite a la matriz resource.errors, pero aquí con el mal inicio de sesión se pasa en flash.

+3

debe publicar su respuesta como una respuesta (que puede aceptar más adelante) y no como una edición :) – oers

+3

Por favor, publique su respuesta como respuesta, no como una edición, de lo contrario permanecerá en stackoverflow como sin respuesta – Calavera

Respuesta

15

Como has descubierto, Devise no usa flash[:message], flash[:warning] y flash[:error].

Devise utiliza flash[:notice] y flash[:alert].

No es un hallazgo fácil en el documentation, pero está justo por debajo del tercer punto en Configurando los controladores.

Espero que esto aclare las cosas.

Cuestiones relacionadas