2012-01-30 14 views
6

Im che cerca un buon plugin per jQuery in grado di gestire trovare il paese una città appartiene (del tipo con completamento automatico)Rails/Jquery Autocomplete automatico plug-in completo per città, paese

ad esempio:

Typing "New Yor" 

in caso di completamento automatico per

New York, United States 

ed essere in grado di salvare la città e il paese come

:city 
:country 

Quale sarebbe un buon modo per ottenere tale funzionalità? Intendo di più in termini di memorizzazione di tutti i paesi e le città nel database degli utenti. Conosco lo https://github.com/jim/carmen ma quello viene riscritto e mi piacerebbe scoprirlo da solo, con un piccolo aiuto.

risposta

8

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 
+0

Hai fatto un buon modo nella giusta direzione con questo, grazie! – Rubytastic

0

Nel tuo caso, la soluzione migliore per me è utilizzare la google map api per conoscere un buon ritorno. Puoi ad esempio utilizzare il plugin htp: //github.com/sgruhier/jquery-addresspicker.

+0

Grazie a questo aspetto, lascia aperta la domanda per qualche altra risposta Questo potrebbe funzionare con alcune modifiche, solo il problema è che non hai quindi alcun controllo sui valori restituiti. USA invece di Stati Uniti. Preferirei una soluzione locale con il database del proprio paese. però però per aver indicato la gemma – Rubytastic

Problemi correlati