【问题标题】:Rails geocoder gem show resultsRails 地理编码器 gem 显示结果
【发布时间】:2017-09-14 09:36:16
【问题描述】:

我使用geocoder gem 以便从地址设置longitudelatitude

 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

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 rails-geocoder


    【解决方案1】:

    如果没有更多关于您的items 的纬度/经度值的信息,很难确定,但是从您的查询中跳出来的是:

    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的这个部分了吗?

    请注意,这些方法通常会在您的测试和开发环境中返回 nil,因为诸如“localhost”和“0.0.0.0”之类的东西不是 Internet IP 地址。

    【讨论】:

    • 感谢@Brian 的回复。为了分别回答您的问题,有几个项目的值为:Latitude: 39.6471643, Longitude: -75.6857385location_info = request.location 假设根据 ip 返回用户的当前位置。另外提醒一下,我使用rails server -b 0.0.0.0 来启动服务器。我的问题是,为什么它根本不重新调整任何结果?我该如何测试它是否有效??
    • 我想如果你用location_info = [39.6471643, -75.6857385] 替换location_info = request.location 你会看到一些结果。您没有看到任何结果,因为您查询的是位于 0 纬度、0 度经度 5 英里范围内的商品,该地区位于非洲海岸附近的海洋中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多