2012-01-30 3 views
6

Im ищет хороший JQuery плагин, который может обрабатывать найти страну город принадлежит (по типу с автозаполнения)Rails/Jquery автозаполнения автозаполнения плагин для города, страны

, например:

Typing "New Yor" 

Если автозаполнения

New York, United States 

и быть в состоянии спасти город и страну, как

:city 
:country 

Что было бы хорошим способом достижения такой функциональности? Я имею в виду больше с точки зрения хранения всей страны и города в пользовательской базе данных. Я знаю https://github.com/jim/carmen, но это переписывается, и я хотел бы сам это выяснить, с небольшой помощью.

ответ

8

Мог бы также написать свою собственную логику для этого, так как я не думаю, что плагин собирается представить себя:

Я предполагаю, что город и страна имеют идентификаторы. Если нет, логика будет проще. Используйте автозаполнение jQueryUI для запуска автозаполнения для вашего элемента. Добавьте метод контроллера, который даст метку вашего города и страны (вероятно, метод для объекта города) вместе с вашими идентификаторами назад как json. В автозавершении «выберите» обратный вызов установите скрытые поля в форме для идентификаторов города и страны. Эта последняя часть является необязательной, потому что я не знаю, как вы планируете сохранять эти данные из формы.

В следующих примерах предполагается много о приложении, но должно быть достаточно, чтобы вы начали:

пример скрипта для просмотра:

$("#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; 
     } 
    }) 

контроллер:

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

Получил хороший способ в правильном направлении с этим, thx! – Rubytastic

0

В вашем случае лучшим решением для меня является использование google-карты api для получения хорошего возврата. Вы можете, например, использовать плагин htp: //github.com/sgruhier/jquery-addresspicker.

+0

Спасибо, я заглядываю в это, оставляем вопрос открытым для ответа. Это может работать с некоторыми изменениями, только проблема заключается в том, что вы не имеете контроля над возвращаемыми значениями. США, а не США. Я бы предпочел локальное решение с собственной базой данных. thx, хотя для указания драгоценного камня – Rubytastic

Смежные вопросы