fuerza también escribir su propia lógica para esto, ya que no creo que un plugin va a presentarse a sí misma:
Asumo la ciudad y el país tienen ID. De lo contrario, la lógica sería más simple. Usa la función de autocompletar de jQueryUI para activar la función de autocompletar para tu elemento. Agregue un método de controlador, que le dará la etiqueta de ciudad y país (probablemente un método en un objeto de ciudad) junto con sus identificadores como json. En la devolución de llamada de "selección" de autocompletar, configure los campos ocultos en su formulario para los ID de ciudades y países. Esta última parte es opcional porque no sé cómo planea mantener estos datos en el formulario.
Los ejemplos siguientes suponen mucho acerca de su aplicación, pero debería ser suficiente para empezar:
ejemplo de guión para la vista:
$("#yourField").autocomplete({
source: "/path_to_your_action",
minLength: 2,
select: function(event, ui) {
$(this).val(ui.item.label);
$(this).find("#country_id").val(ui.item.country_id);
$(this).find("#city_id").val(ui.item.city_id);
event.preventDefault;
}
})
controlador:
def your_action
term = params[:term]
cities = City.where("cities.name like ?", "%#{term}%")
.limit(25)
.all
render :json=>cities.collect{|c| {:label=>c.your_label_method, :city_id=>c.id, :country_id=>c.country_id}}
end
city.rb
def your_label_method
"#{self.name}, #{self.country.name)}"
end
¡Hizo un buen camino en la dirección correcta con esto, gracias! – Rubytastic