问题 使用地理编码器宝石作为导轨,我如何获得访客的城市?


https://github.com/alexreisner/geocoder

我找不到从ip地址显示访客城市的文档?我知道如何使用HTML5,但我想使用地理编码器的价值。谢谢


8186
2018-04-09 14:12


起源



答案:


我花了几个小时才意识到答案很简单:

request.location.city

地理编码页面 有这个例子,但我认为我需要申报 请求 但不,不需要更多。

如果你没有地理编码器,你必须安装宝石,但除此之外什么也没有。


8
2017-12-19 20:36



当我这样做时,控制台显示空结果。我在地球上的时候;) - ImranNaqvi
当我按照这个例子时,我得到一个NameError,说“请求”是未定义的。你为什么没有同样的问题? - sabaeus


答案:


我花了几个小时才意识到答案很简单:

request.location.city

地理编码页面 有这个例子,但我认为我需要申报 请求 但不,不需要更多。

如果你没有地理编码器,你必须安装宝石,但除此之外什么也没有。


8
2017-12-19 20:36



当我这样做时,控制台显示空结果。我在地球上的时候;) - ImranNaqvi
当我按照这个例子时,我得到一个NameError,说“请求”是未定义的。你为什么没有同样的问题? - sabaeus


我是怎么做到的 -

location = Geokit::Geocoders::IpGeocoder.geocode(source_ip)
city = location.city
country = location.country

这里,source_ip是一个字符串对象。


6
2018-04-09 16:56



正是我在寻找...谢谢! - kinet


# app/models/user.rb
geocoded_by :ip_address,
  :latitude => :lat, :longitude => :lon
after_validation :geocode

地理编码器的片段 现场


1
2018-04-09 14:33



我实际上正在寻找它如何为访问者而不是用户返回“nearbys”方法结果。 - kinet


你可以用两种不同的方式做到这一点

1)如果您可以将访客城市/地址作为字符串,则地理编码器会自动将其转换为纬度和经度

class Message < ActiveRecord::Base
  geocoded_by :full_address
  after_validation :geocode

  def full_address
    "#{city}, Sri Lanka"
  end

end

2)否则你将必须跟踪访问者的IP,例如在 主页 在'geocoder'宝石上

注意:你可以使用附近的方法如下

<Active Record Object List>.near(<City Name>, <distance>, :order => :distance)

Ex: @messages = @messages.near("colombo", 10, :order => :distance)

还有一个由瑞安投下的超级银幕 railscasts


1
2018-04-09 15:06