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