2017-09-14 78 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