potrebbe anche scrivere la propria logica per questo dato che non credo che un plugin sta per presentarsi:
sto assumendo la città e il paese hanno ID. In caso contrario, la logica sarebbe in realtà più semplice. Utilizza il completamento automatico di jQueryUI per attivare il completamento automatico del tuo elemento. Aggiungi un metodo di controllo, che darà l'etichetta della tua città e paese (probabilmente un metodo su un oggetto di città) insieme ai tuoi id come json. Nella chiamata automatica "seleziona", imposta campi nascosti nel modulo per gli ID di città e paesi. Quest'ultima parte è facoltativa perché non so come pensi di mantenere questi dati dal modulo.
Gli esempi che seguono presuppongono molto sulla vostra applicazione, ma dovrebbe essere sufficiente per iniziare:
esempio di script per 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;
}
})
regolatore:
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
Hai fatto un buon modo nella giusta direzione con questo, grazie! – Rubytastic