Cũng có thể viết logic của riêng bạn cho điều này kể từ khi tôi không nghĩ rằng một plugin được sẽ trình bày bản thân:
tôi giả sử thành phố và đất nước có id. Nếu không, logic sẽ thực sự đơn giản hơn. Sử dụng tính năng tự động hoàn thành của jQueryUI để kích hoạt tính năng tự động hoàn thành cho phần tử của bạn. Thêm một phương pháp điều khiển, sẽ cung cấp cho thành phố và quốc gia của bạn nhãn (có thể là một phương pháp trên một đối tượng thành phố) cùng với id của bạn trở lại như json. Trong cuộc gọi lại "chọn" tự động hoàn tất, hãy đặt các trường ẩn trong biểu mẫu của bạn cho id thành phố và quốc gia. Phần cuối cùng này là tùy chọn vì tôi không biết cách bạn định lưu giữ dữ liệu này từ biểu mẫu.
Các ví dụ sau đây giả định rất nhiều về ứng dụng của bạn, nhưng phải đủ để giúp bạn bắt đầu:
ví dụ về kịch bản cho quan điểm:
$("#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;
}
})
điều khiển:
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
Có một cách tốt để đi đúng hướng với điều này, thx! – Rubytastic