2012-07-13 11 views
6

मुझे उपयोगकर्ता के निकटता के आधार पर कुछ स्थानों को प्रदर्शित करने का प्रयास करने में मामूली समस्या आ रही है। मेरे नियंत्रक में मेरे पास यह है:रेल, जियोकोडर, और

if User.find(current_user) 
    @user = User.find(current_user) 
    @locations = Location.near(params[:latitude => @user.latitude, :longitude => @user.longitude], 50, :order => :distance) 
    end 

उपयोगकर्ताओं के अक्षांश और देशांतर संग्रहित हैं। मुझे लगता है कि मुझे स्थान.नियर लाइन में सही पैरामीटर नहीं मिला है, लेकिन मैं यह नहीं समझ सकता कि उन्हें क्या होना चाहिए।

किसी भी मदद की सराहना की जाएगी।

चीयर्स!

+0

जब भी मैं उपयोग करने का प्रयास करता हूं: ऑर्डर =>: दूरी यह मुझे त्रुटि दिखाती है 'दूरी को कनवर्ट करने में दूरी को कनवर्ट करने के लिए किलोमीटर में कनवर्ट करने के लिए किलोमीटर में कनवर्ट नहीं किया जा सकता है। –

उत्तर

6

आइए थोड़ा सा पुनः लिखने का प्रयास करें, current_user पहले ही सेट किया जाना चाहिए, User.find को कॉल करने की कोई आवश्यकता नहीं है। तो यह है कि आप लंबे समय से एक सरणी

@locations = Location.near([current_user.latitude, current_user.longitude], 50, :order => :distance) 

http://railscasts.com/episodes/273-geocoder

http://www.rubygeocoder.com/

https://github.com/alexreisner/geocoder के रूप में अक्षां पारित कर सकते हैं,

2

आप दूरी है कि आप खोज चाहते हैं परिभाषित कर सकते हैं (रीडमी जांच) लग रहा है, याद रखें इकाई को भी पास करें:

@locations = Location.near([current_user.latitude, current_user.longitude], 50, units: :km) 
+0

मेरे लिए बहुत उपयोगी था। धन्यवाद! –

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