Continuación ... model_auto_completer

Hola,

Tengo un problema con el plugin model_auto_completer, lo estoy
intentando utilizar con link_to_function y page.insert_html, la primera
inserción responde bien, pero en las siguientes agrega los controles
pero simplemente no responde el model_auto_completer, les agradecería le
echaran un vistazo, ojalá puedan ver algo, bien primeramente el partial
que se encarga de llamar a link_to_function :

#app/views/salidas/_form.rhtml

<%= render :partial => "item", :collection => @salida.salida_items %>
Producto Cantidad

<%= link_to_function "Agrega partida" do |page| page.insert_html :bottom, :items, :partial => "item", :object => SalidaItem.new end %>

#app/views/salidas/_item.rhtml

<% fields_for "salida[salida_item_attributes][]", item do |salida_item_form| %> <%= model_auto_completer "producto[nombre]", item.nombre_producto, "salida[salida_item_attributes][][producto_id]", item.producto_id %> <%= salida_item_form.text_field :cant, :style => "text-align: right;" %> <%= link_to_function "Eliminar", "$(this.parentNode.parentNode).remove()" %> <% end %>

Les agradezco bastante la ayuda que me puedan brindar.
Saludos.

Jaime Mora R.

On Oct 18, 2007, at 12:41 AM, Jaime Mora R. wrote:

Tengo un problema con el plugin model_auto_completer, lo estoy
intentando utilizar con link_to_function y page.insert_html, la
primera
inserción responde bien, pero en las siguientes agrega los controles
pero simplemente no responde el model_auto_completer
<%= link_to_function “Agrega partida” do |page|
page.insert_html :bottom, :items, :partial => “item”, :object =>
SalidaItem.new
end %>

En efecto ahi hay un pequeño conflicto.

El plugin genera IDs con sufijos aleatorios para el campo de texto y
el oculto, para que no haya colisiones (con probabilidad 1-ε :-). Por
tanto, se pueden poner varios widgets en una misma pagina en la
medida en la que el helper los genere
.

En la aproximacion que tomaste ocurre que el page.insert_html computa
el resultado de la partial en el lado servidor una sola vez. La
instancia de la partial se convierte en un string pelado que viaja en
la pagina como argumento de un new Insertion.Bottom(). En el fuente
veras que no hay partials ni objects ni nada, como es logico, hay una
sola cadena.

En particular el string pelado tiene una sola generacion de widget,
una sola invocacion al helper.

Al añadir fragmentos solo del lado cliente, sucede que se copia lo
mismo, y por ello tienes en el DOM elementos distintos con mismo ID.
Eso no es correcto y los navegadores cuando sucede tienen
comportamientos anomalos como el que observas.

La moraleja es que si tienes un cacho de HTML con IDs no puedes
replicarlo en la misma pagina porque un ID de elemento ha de ser
unico. Esto es un tema HTML puro y duro.

La solucion pasa porque ese enlace en lugar de replicar la cadena que
se trajo del servidor haga llamadas Ajax para que vengan nuevas
instancias del partial.

– fxn

Xavier N. wrote:

En efecto ahi hay un pequeño conflicto.

El plugin genera IDs con sufijos aleatorios para el campo de texto y
el oculto, para que no haya colisiones (con probabilidad 1-ε :-). Por
tanto, se pueden poner varios widgets en una misma pagina en la
medida en la que el helper los genere
.

Gracias Xavier !. Esto me lleva a simplificar las vistas, a re-pensar la
solución, estaba pretendiendo implementar un grid al puro estilo
spreadsheet, dónde una columna eran model_auto_completer. Lo que haré es
simplemente un control model_auto_completer, un control cant, etc. Y un
link_to_function para agregar partidas y simplemente actualizar una
table, pero en esta tabla unicamente se utilizará para refrescar los
resultados con Ajax en la misma página. Cómo ves ?

Te agradezco mucho que te tomes el tiempo para esto.
Saludos.

Jaime Mora R.

Sigo vuestra estupenda lista desde hace un tiempo y he pensado anotar lo
plugins que vayan apareciendo por aquí, para aumentar mi experiencia.

¿Para qué sirve este model_auto_completer?

gracias.

On Oct 18, 2007, at 1:36 AM, Jaime Mora R. wrote:

Gracias Xavier !. Esto me lleva a simplificar las vistas, a re-
pensar la
solución, estaba pretendiendo implementar un grid al puro estilo
spreadsheet, dónde una columna eran model_auto_completer. Lo que
haré es
simplemente un control model_auto_completer, un control cant, etc.
Y un
link_to_function para agregar partidas y simplemente actualizar una
table, pero en esta tabla unicamente se utilizará para refrescar los
resultados con Ajax en la misma página. Cómo ves ?

Suena bien si.

Te agradezco mucho que te tomes el tiempo para esto.

Nada nada es un placer.

– fxn

On Oct 18, 2007, at 4:12 PM, Rafa C. wrote:

Sigo vuestra estupenda lista desde hace un tiempo y he pensado
anotar lo plugins que vayan apareciendo por aquí, para aumentar mi
experiencia.

¿Para qué sirve este model_auto_completer?

Conoces el helper text_field_with_auto_complete?

– fxn

pues no, aún soy novato.
leeré el hilo que me habeis dejado, gracias.

Rafa C. wrote:

¿Para qué sirve este model_auto_completer?

Te dejo el hilo [1] dónde Xavier N. hace el anuncio en esta lista.

[1] [ANN] model_auto_completer - ES - Ruby-Forum

Espero te sirva.
Saludos.

Jaime Mora R.