Inicializar campo hidden en model_auto_completer

No he encontrado la forma de inicializar explicitamente el campo hidden
en el plugin model_auto_completer:

#app/views/movtos/show.rhtml
<% form_remote_for :movto_item, :url => movto_items_path(@movto), :html
=> { :id => “movto_item_form” } do |f| %>

Producto:
<%= model_auto_completer "producto[nombre]", "", "movto_item[producto_id]", "", { }, { :size => 50 } %>

<%= submit_tag "Agrega producto" %>

<% end %>

#app/controllers/movto_items_controller.rb
class MovtoItemsController < ApplicationController

def create
@movto_item = MovtoItem.create(params[:movto_item])
end

end

#app/views/movto_items/create.rjs
if @movto_item.errors.empty?
page.replace_html “flash_notice”, “”
page.insert_html :bottom, :items, :partial => “item”, :object =>
@movto_item
page[:movto_item_form].reset
else
page.replace_html “flash_notice”, error_messages_for(:movto_item)
page.show “flash_notice”
end

Si observan en create.rjs utilizo page[:movto_item_form].reset para
limpiar los campos del form_remote_for, hasta aqui no hay ningún
problema, pero por alguna razón que no he encontrado el
model_auto_completer siempre guarda el id del ultimo modelo
seleccionado, de tal forma que en las proximas llamadas Ajax siempre me
agrega el ultimo producto aunque el campo esté vacio.

De antemano muchas gracias por su ayuda.
Saludos.

Jaime Mora R.

On Dec 28, 2007, at 2:13 AM, Jaime Mora R. wrote:

<%= model_auto_completer “producto[nombre]”, “”,
“movto_item[producto_id]”, “”, { }, { :size => 50 } %>

Esta en los docs my friend :slight_smile:

The hidden field will be named hf_name and will have an initial

value of hf_value.

– fxn

On Dec 28, 2007, at 2:13 AM, Jaime Mora R. wrote:

Si observan en create.rjs utilizo page[:movto_item_form].reset para
limpiar los campos del form_remote_for, hasta aqui no hay ningún
problema, pero por alguna razón que no he encontrado el
model_auto_completer siempre guarda el id del ultimo modelo
seleccionado, de tal forma que en las proximas llamadas Ajax siempre
me
agrega el ultimo producto aunque el campo esté vacio.

Esto creo que es porque reset() ignora campos ocultos. No he
encontrado una referencia JavaScript que documente esto, pero unas
pruebas con Firebug lo sugieren.

Si estoy en lo cierto habria que borrar el campo a mano desde la RJS,
por ejemplo asi:

untested

page << “$(‘movto_item_producto_id’).value = ‘’;”

– fxn

Xavier N. wrote:

Si estoy en lo cierto habria que borrar el campo a mano desde la RJS,
por ejemplo asi:

untested

page << “$(‘movto_item_producto_id’).value = ‘’;”

RJS error:

TypeError: $(“movto_item_producto_id”) has no properties


Jaime Mora R.

Xavier N. wrote:

Mira cual es el ID del campo oculto y ponlo ahi.

Tb probé con:
page << “$(‘movto_item[producto_id]’).value = ‘’;”

y obtengo el mismo RJS error.

Esta es la fuente que genera model_auto_completer :

Tb probé con el id anterior y lo mismo, el problema persiste. No crees
que sea la sintaxis del raw JavaScript ? Esperaría que funcionase con
movto_item[producto_id] por conveniencia ya que el último id entiendo es
aleatorio.


Jaime Mora R.

On Dec 28, 2007, at 4:31 PM, Jaime Mora R. wrote:

TypeError: $(“movto_item_producto_id”) has no properties

Mira cual es el ID del campo oculto y ponlo ahi.

– fxn

Xavier N. wrote:

Ah claro, esta el sufijo aleatorio. Mejor ir por el nombre si es unico.

El caso es que has de mirar el codigo fuente y limpiar el campo a mano
con JavaScript, por ejemplo (sobre la marcha):

page << ‘document.getElementsByName(“movto_item[producto_id]”)
[0].value = “”’;

No se si es correcto tal cual pero ves la idea.

– fxn

Por supuesto que vi la idea !!, y funcionó a la primera, tal cuál lo
pusiste ahí. Muchas gracias Xavier.

Yo no olvido el año viejo porque me ha dejado cosas muy buenas …

Feliz Año queridos compañeros Raileros !!!

Gracias … saludos

Jaime Mora R.

Jaime Mora R. escribió:

No se si es correcto tal cual pero ves la idea.

Gracias … saludos

Jaime Mora R.

Feliz Año a todos igualmente.

On Dec 28, 2007, at 5:35 PM, Jaime Mora R. wrote:

Tb probé con el id anterior y lo mismo, el problema persiste. No crees
que sea la sintaxis del raw JavaScript ? Esperaría que funcionase con
movto_item[producto_id] por conveniencia ya que el último id
entiendo es
aleatorio.

Ah claro, esta el sufijo aleatorio. Mejor ir por el nombre si es unico.

El caso es que has de mirar el codigo fuente y limpiar el campo a mano
con JavaScript, por ejemplo (sobre la marcha):

page << ‘document.getElementsByName(“movto_item[producto_id]”)
[0].value = “”’;

No se si es correcto tal cual pero ves la idea.

– fxn