2012-01-30 19 views
6

इम कि (स्वत: पूर्ण के साथ प्रकार पर)रेल/शहर के लिए jQuery के स्वत: पूर्ण स्वत: पूर्ण प्लगइन, देश

उदाहरण के लिए

देश एक शहर के अंतर्गत आता है खोजने संभाल कर सकते हैं एक अच्छा jQuery प्लगइन की तलाश:

Typing "New Yor" 

New York, United States 

को स्वत: पूर्ण कर देना चाहिए और

शहर और देश को बचाने के लिए सक्षम हो 10
:city 
:country 

ऐसी कार्यक्षमता प्राप्त करने का एक अच्छा तरीका क्या होगा? मेरा मतलब उपयोगकर्ता के सभी डेटाबेस और शहर के उपयोगकर्ता डेटाबेस में संग्रहीत करने के मामले में अधिक है। मुझे https://github.com/jim/carmen पता है लेकिन वह एक फिर से लिखा जा रहा है और मुझे थोड़ी मदद के साथ खुद को समझना अच्छा लगेगा।

उत्तर

8

रूप में अच्छी तरह इस बात के लिए अपने स्वयं के तर्क में लिख सकते हैं के बाद से मुझे नहीं लगता कि एक प्लगइन स्वयं को प्रस्तुत करने जा रहा है:

मैं यह सोचते हैं रहा हूँ शहर और देश आईडी की है। यदि नहीं, तो तर्क वास्तव में सरल होगा। अपने तत्व के लिए स्वत: पूर्ण ट्रिगर करने के लिए jQueryUI के स्वतः पूर्ण का उपयोग करें। एक नियंत्रक विधि जोड़ें, जो आपके शहर और देश के लेबल (संभावित रूप से एक शहर वस्तु पर एक विधि) देगा, साथ ही आपकी आईड्स को जेसन के रूप में वापस ले जाएगा। स्वत: पूर्ण "चयन" कॉलबैक में, शहर और देश आईडी के लिए अपने फॉर्म में छिपा फ़ील्ड सेट करें। यह अंतिम भाग वैकल्पिक है क्योंकि मुझे नहीं पता कि आप इस डेटा को फ़ॉर्म से कैसे बनाए रखने की योजना बना रहे हैं।

निम्न उदाहरण अपने अनुप्रयोग के बारे में बहुत मान, लेकिन आप आरंभ करने के लिए पर्याप्त होना चाहिए:

देखने के लिए स्क्रिप्ट का उदाहरण:

$("#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 मानचित्र एपीआई का उपयोग कर रहा है। उदाहरण के लिए आप प्लगइन एचटीपी: //github.com/sgruhier/jquery-addresspicker का उपयोग कर सकते हैं।

+0

धन्यवाद, मैं इसे देखता हूं, कुछ और प्रतिक्रियाओं के लिए प्रश्न खोलता हूं यह कुछ संशोधनों के साथ काम कर सकता है केवल समस्या यह है कि आपके पास लौटाए गए मूल्यों पर कोई नियंत्रण नहीं है। संयुक्त राज्य अमेरिका के बजाय संयुक्त राज्य अमेरिका। मैं अपने देश के डेटाबेस के साथ एक स्थानीय समाधान पसंद करेंगे। thx हालांकि मणि – Rubytastic

संबंधित मुद्दे