Rails / Jquery Автозаполнение плагин автозаполнения для города, страны - PullRequest
6 голосов
/ 30 января 2012

Я ищу хороший плагин Jquery, который может найти страну, к которой принадлежит город (по типу с автозаполнением)

, например:

Typing "New Yor"

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

New York, United States

И сможете сохранить город и страну как

:city
:country

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

Ответы [ 2 ]

8 голосов
/ 31 января 2012

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

Я предполагаю, что у города и страны есть идентификаторы. Если нет, то логика будет на самом деле проще. Используйте автозаполнение 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 голосов
/ 30 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...