2010-03-04 12 views
5

En una aplicación de Rails 3, quiero hacer que el navegador llame a una función remota siempre que se active una determinada casilla de verificación. En Rails 2, esto fue fácil de hacer pasandoform.submit() perdido por rails.js Observador de UJS

:onclick => remote_function(...) 

al asistente de casilla de verificación. En Rails 3, el remote_ * funciones están en desuso, por lo que intentó la siguiente solución:

  • crear una forma alrededor de la casilla de verificación usando form_tag ... :remote => true
  • envíe el formulario llamando $("dummy_form").submit(); desde el controlador onclick

En el archivo rails.js que viene incluido con Rails, hay un observador que escucha los eventos submit. Sin embargo, estos solo parecen activarse cuando el usuario hace clic en un botón de envío, pero no cuando se llama al form.submit() (hasta ahora probado solo en FF).

Esto tiene el efecto no deseado de que el envío no se realiza en segundo plano a través de AJAX, sino de la manera habitual, por lo que el navegador abandona el sitio actual y muestra la respuesta del controlador.

¿Alguien conoce una solución? ¿Tal vez una forma completamente diferente de obtener la misma funcionalidad?

Respuesta

1

Usted puede enviar el formulario llamando al:

$("dummy_form").request({ 
    onSuccess: function(response) {eval(response)} 
}); 

Esto le envíe el formulario utilizando AJAX para la url dada a form_tag y evaluar la respuesta recibida, por lo que tiene que responder con JS. Cambia la implementación de onSuccess si no quieres eso.

Si el envío del formulario es una solución, como usted dice, a continuación, en lugar de presentar todo el formulario también se puede manejar el caso en clic en la casilla manualmente y enviar un AJAX request:

<%= javascript_tag do %> 
Event.observe(window, 'load', function() { 
    $('CHECK_BOX_ID').observe('click', function(event) { 
    new Ajax.Request('/your/url', { 
     onSuccess: function(response) { 
     // yada yada yada 
     } 
    }) 
    }); 
}); 
Cuestiones relacionadas