2012-02-28 16 views
5

Estoy usando Rails 3.0 con el script prototype ujs rails.js.Rails UJS para contenido añadido dinámicamente

Tengo algunos enlaces link_to "...", :remote => true que se están agregando a la página después de que la página se ha cargado, y así después de rails.js ha adjuntado los eventos ujs a todos los enlaces a[data-remote].

¿Cómo consigo rails.js para volver a buscar los nuevos enlaces?

rails.js parece consistir en una función anónima, por lo que no puedo llamarlo directamente.

La única forma en que se me ocurre hacer esto es envolver todos los rails.js en mi propia función para que pueda llamar a la carga de página * y * cuando agregué nuevos enlaces.

Esto parece un enfoque razonable, pero vacila ya que no puedo creer que soy el primero en tener este problema y que no hay una forma estándar de hacerlo ...

+0

¿Has tenido algo de suerte con esto? Estoy teniendo el mismo problema. Estoy usando 'button_to' mientras tanto, lo que me entristece. No lo entiendo porque está usando 'delegate', que se supone que proporciona el enlace tardío. También el delegado ha sido reemplazado ... pero ese es otro asunto. –

Respuesta

2

Cuando se renderiza un botón, enlace, etc. utiliza los ayudantes carriles

= link_to "Add to basket", basket_path, :method => :post, :remote => true 

Así que en la respuesta de la vista remota (ej .: some_view.js.erb/some_view.js.haml) se debería usar de nuevo los auxiliares de rieles si desea un elemento : remoto. No necesita volver a escanear los nuevos elementos DOM para que se adjunte el comportamiento remoto.

En el js vista se puede actualizar/cambiar el contenido de la DOM usando javascript

:plain 
     $('#some-id-selector').replaceWith("#{escape_javascript(render :partial => 'some_other_view.html.haml')}"); 

También se puede ver en el Inspector de la red de su navegador si las nuevas acciones está siendo enviar.

Cuestiones relacionadas