2010/6/17 Nestor Rodriguez <[email protected]> > Que tal amigos de Ruby on Rails > > Estoy trabajando con ajax hace poco y me encontré con un dilema, el cual no > logro resolverlo. > > Lo que pasa es que estoy intentando enviar por medio de .RJS una tabla con > datos y cada fila llama a una función javascript diferente. > Mi .RJS contiene: > > page.replace_html("div_tabla_clientes" , :partial => "clientes_select") > page.replace_html :notice, flash[:notice] > flash.discard > > Leyendo vi que el page.replace_html genera un Element.update y gracias a > firebug de mozilla veo que me envía los script > Un pedazo de la respuesta del servido es: > > try { > > Element.update("div_tabla_clientes", "<div style=\"clear:both\"></div> > <div id=\"div_tabla_clientes\"> > <table> > <tr> > <th>Cedula I.</th> <th>1\u00ba Nombre</th> <th>2\u00ba > Nombre</th> <th>1\u00ba Apellido</th> <th>2\u00ba Apellido</th> > </tr> > <tr> > <td> > <a onclick=\"a10();\" href=\"#\"> > 3383051 > </a> > *<script type=\"text/javascript\"> > function a10(){ > $('solicitud_cliente_id').innerHTML = '<option > value=\"10\">Celso Daniel Aquino </option>' > } > </script> > * </table> > <br /> > <div class=\"pagination ajax\"><a href=\"/solicitudes/new?page=2\" > class=\"prev_page\" rel=\"prev\">« Anterior</a> <a > href=\"/solicitudes/new?page=1\" rel=\"start\">1</a> <a > href=\"/solicitudes/new?page=2\" rel=\"prev\">2</a> <span > class=\"current\">3</span> <span class=\"disabled next_page\">Siguiente > »</span></div> > </div> > > "); > > } catch (e) { alert('RJS error: > > '... > > \");'); throw e } > > El problema es que la tabla llega a remplazar el contenido del DIV > especificado, pero por alguna razón, no coloca los script, sencillamente > como que los omite a pesar de que el XHR recibió los scripts, esto hace que > la llamada a las funciones en los enlaces no funcionen. > > Alguien puede ayudarme. > > Desde ya gracias! > Atte. > Néstor Rodríguez > > > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > > Hola Nestor no tenes que enviar JS con el template, el browser no lo va a interpretar como js, salvo que envies solo JS y el content type del request pida eso. Lo que tenes que hacer es usar una tecnica que se llama Event Delegation, la idea basica es "escuchar" mas arriba en el DOM por los clicks en la tabla y filtrarlos para que haga lo que necesites, entonces podes poner y sacar html y siempre va a andar, sino tenes que reconectar los eventos cada vez que metes un poco de html nuevo.
Veo que estas usando Prototype, yo no recuerdo mucho de esa libreria porque uso jQuery por lo que no te puedo pasar un ejemplo, pero en la documentacion de Prototype tiene que aparecer. Saludos
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
