2011-03-28 5 views
8

Tengo un problema al utilizar un inicio de sesión de AJAX. Estoy usando la opción :remote => true y la versión jQuery de los ayudantes de javascript (https://github.com/rails/jquery-ujs). Cuando el usuario ingresa la información correcta, se crea mi create.js.erb dentro de la vista de sesiones. Esto está bien, porque puedo redirigir a mi usuario usando JS en este archivo. Pero cuando ocurre un error, p. el usuario ingresa información falsa, solo los mensajes flash están en la respuesta con un código de error 401 - Unauthorized. Por lo tanto, no se representa ninguna vista o create.js.erb o sth else. Pero quiero manejar este mensaje, mostrándolo en el lateral, para que los usuarios obtengan algún comentario, ¿qué pasa?Diseñar con rieles 3 y remoto => verdadero

También traté de implementar mi propio controlador personalizado con respond_to :js, y jugando con el método :recall de la autenticación Warden. Pero no funciona.

¿Alguien conoce algunas de las mejores prácticas para resolver este problema? ¿O debería evitar estos métodos de ayuda y simplemente usar jQuery puro para las llamadas ajax?

THX, esmoquin

Respuesta

9

Se podría utilizar el evento jQuery "Ajax: Error" en los carriles 3. Sólo enlazar el evento a su forma.

jQuery(function($) { 
    $("#new_model").bind("ajax:error", function(event, data, status, xhr) { 
    alert("something went wrong"); 
    }); 
}); 

Tome un vistazo a este blog post para más detalles sobre qué eventos están disponibles.

+0

Gracias por su respuesta. Me funcionó, pero tengo que reemplazar el ajax: falla con un ajax: error – 23tux

+0

Actualicé mi respuesta en caso de que otras personas no lean los comentarios. –

1

aquí está mi versión

<script> 
    $(document).ajaxError(function(e, XHR, options){ 
    if (XHR.status == 401){ 
     window.location.replace("<%= new_user_session_path %>"); 
    } 
    }); 
</script> 

Se redirige automáticamente al usuario a la página de registro y funciona para todos los elementos de la página.

Cuestiones relacionadas