2017-09-14 80 views
0

我使用的是geocoder gem爲了設置從地址longitudelatitudeRails的地理編碼器的寶石顯示結果

class Ub < ApplicationRecord 

    geocoded_by :full_address 
    after_validation :geocode, if: ->(obj){ obj.full_address.present? } 

    def full_address 
    [street, city, state, zip_code, country].join(",") 
    end 
end 

末搜索:

class SearchController < ApplicationController 

    def search 
    if params[:search].present? 
     location_info = request.location 
     @ubs = Ub.near([location_info.latitude, location_info.longitude], 5, :order => :distance) 
    else 
     @ubs = [] 
    end 
    end 

回答

1

沒有緯度什麼更多信息/ 的經度值是,很難說肯定,但是從我的查詢中跳出來的是這樣的:

WHERE(items.latitude BETWEEN -0.07236589155542399 AND 0.07236589155542399 AND items.longitude BETWEEN -0.07236589155542399 AND 0.07236589155542399)

上緯度/經度這些上限和下限表示小區域在非洲的西海岸,所以我你並不驚訝你的items沒有位於那裏。

什麼樣的價值觀正在被location_info = request.location返回?另外,您是否從the documentation看到此部分?

請注意,這些方法通常在您的測試和開發環境中返回零,因爲像「localhost」和「0.0.0.0」這樣的東西不是Internet IP地址。

+0

感謝您的答覆@布賴恩。分別回答您的問題,一對夫婦項的值是:'緯度:39.6471643,經度:-75.6857385'。 'location_info = request.location'假設根據ip返回用戶的當前位置。還有一點,我用'rails server -b 0.0.0.0'來啓動服務器。我的問題是,爲什麼它沒有重新調整任何結果?以及我如何測試這個看看它是否工作? – Dev

+0

我,如果你用'LOCATION_INFO = 39.6471643,-75.6857385]'你會看到一些成果代替'LOCATION_INFO = request.location'想象。你沒有看到任何結果,因爲你問的是緯度0,經度0,這是在海洋離非洲海岸5英里範圍內的項目。 – Brian