2012-07-13 9 views
6

ユーザーとの距離に基づいて特定の場所を表示しようとすると少し問題があります。私のコントローラでは、私はこれを持っています:Rails、Geocoder、near

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

ユーザーには緯度と経度が格納されています。私はLocation.near行に正しいパラメータがないと思っていますが、何をすべきか分かりません。

ご協力いただければ幸いです。

乾杯!

+0

これまで私が使用しようとしたとき:order =>:distanceそれは私にエラーを表示する 'cantはto_fに距離を変換する' –

答えて

6

ビットを書き直してみてください。current_userが既に設定されている必要があります。User.findを呼び出す必要はありません。あなたは緯度渡すことができますように、それは、あなたが検索したい距離を定義することができます(READMEを確認してください)long配列

@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

単位をキロメータで渡すことは私には非常に便利でした。ありがとう! –

関連する問題