Hola a todos/as,
Estoy utilizando el plugin auto_complete de la siguiente forma
Controlador:
auto_complete_for :track, :title
Vista:
<%= text_field_with_auto_complete :track, :title,
{ :size => 25 },
:skip_style => true,
:indicator => “activity_indicator” -%>
<%= image_tag
‘spinner.gif’%>
Y hasta aquà todo me funciona de maravilla realizando la siguiente
búsqueda en base de datos y mostrando la lista recuperada
Track.find(:all, :conditions => [“LOWER(title) LIKE ?”, ‘%’ +
params[track][title] + ‘%’])
La anterior busqueda la construye el propio plugin con los parámetros
:track y :title del text_field_with_auto_complete.
Mi problema llega cuando quiero añadir una nueva condición de búsqueda,
quiero buscar las tracks con un determinado catalog_id. El dato
de catalog_id lo tengo disponible en la vista, asà que supongo que no
habrÃa problema en enviarlo a la petición de autocomplete.
Pero realmente no se como hacerlo, si con el parametro :with o ¿como?
incluyendo :with => “‘catalog_id=’ + $(’#{@catalog.id}’).value”,
realmente no se lo que significa el :with. Además mis conocimientos de
javascript son muy mÃnimos.
Un saludo y gracias
2008/6/21 Paco G. Rivas [email protected]:
Pero realmente no se como hacerlo, si con el parametro :with o ¿como?
incluyendo :with => “‘catalog_id=’ + $(‘#{@catalog.id}’).value”, realmente
Prototype ofrece $F(‘campo’) para decir $(‘campo’).value.
no se lo que significa el :with. Además mis conocimientos de
javascript son muy mÃnimos.
Muy bien estas cerca.
Ese parametro es una expresion JavaScript cuyo valor debe ser un query
string vamos a decir. Por defecto es algo del estilo
‘fieldname=value’, donde “fieldname” es el nombre del campo de texto,
y “value” el valor.
Si seteas :with entonces debes incluir tambien el campo de texto
mismo, ya que :with no son campos ademas del de texto, si no que
configura todo lo que se envia.
Como la llave y el valor necesitan codificacion delegamos en el
serialize() de Prototype de este modo:
:with => “[$(‘el_campo_de_texto’).serialize(),
$(‘catalog_id’).serialize()].join(‘&’)”
A veces acabas antes serializando el form que contiene al campo de
texto:
:with => “$(‘el_form’).serialize()”
por ejemplo yo uso esa tecnica para poder añadir distintos tipos de
restricciones a la busqueda, van en campos ocultos y de ese modo los
envias todos bien escapados y de forma muy sencilla.
Seguramente ya sabras que en el servidor tendras que escribir una
accion ad-hoc, y que los resultados se devuelven facil con el helper
auto_complete_result.