Soy totalmente nuevo en javascript y probablemente estoy mordiendo más de lo que puedo masticar, pero estoy tratando de obtener el widget jQuery autcomplete trabajando en mi sitio de Rails.jQuery autocompletar - Cómo ver la etiqueta del artículo pero enviar el valor del artículo
Tengo una página llamada "enlaces" en la que deseo poder asignar una persona a un enlace. Usando el autocompletar debería poder tener un cuadro de texto que despliega una lista de nombres de personas sugeridos por el autocompletado, y cuando se selecciona, el nombre de las personas permanece en el cuadro de texto. Pero cuando se envía el formulario, no deseo que se envíe el nombre de las personas con el formulario, quiero que se envíe el ID de persona con el formulario.
Así que la pregunta es cómo hacer que el nombre de las personas una vez seleccionadas, permanezca en el cuadro de texto, pero una vez enviado se envía la identificación de las personas.
En Rails, esta es la forma en que estoy suministrando los datos JSON de mi controlador de Persona:
def index
if params[:term]
@people = Person.find(:all,:conditions => ['given_name LIKE ?', "#{params[:term]}%"], :limit => 5)
else
@people = Person.all
end
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @people.to_json(:only => [:id, :given_name]) }
end
end
Las salidas anteriores el siguiente texto JSON:
[{"person":{"id":1,"given_name":"dale"}},{"person":{"id":2,"given_name":"sally"}},{"person":{"id":3,"given_name":"joe"}}]
Usando el plugin autocompletar jQuery, cómo ¿Tengo el 'given_name' en las coincidencias sugeridas, dejo el 'given_name' en el cuadro de texto una vez seleccionado, pero envíe el 'id' cuando se envíe el formulario?
Creo que necesito especificar en el javascript qué etiqueta mostrar y qué valor enviar. Como me estoy acostumbrando a javascript, si pudiera explicar cómo funciona su respuesta, sería de agradecer. Gracias.
Gracias por su respuesta. Creo que su solución funcionará, pero esperaba que la capacidad de enviar un valor diferente al que se muestra en el cuadro de texto estaría integrado en el widget jQuery. Parece que esto debería ser posible sin el campo oculto, pero no estoy captando algo. Si no es posible, rodaré con la solución de campo oculto. – Oscar
Volví a revisar los documentos del widget jQuery y tu respuesta es correcta. La forma de enviar un valor diferente al que se muestra en el campo de texto (como en la ID de una persona y no en el nombre de la persona seleccionada) es a través de un campo oculto. Creo que estaba haciendo esto demasiado complicado al tratar de hacer que el widget suministre el valor oculto por sí mismo. El ejemplo en los documentos muestra claramente que el widget se usa en combinación con un campo oculto. Gracias. – Oscar