Ruby on rails 使用geocoder gem for rails,如何获取访问者';s市?

Ruby on rails 使用geocoder gem for rails,如何获取访问者';s市?,ruby-on-rails,ruby-on-rails-3,rails-geocoder,Ruby On Rails,Ruby On Rails 3,Rails Geocoder,我找不到从ip地址显示访客所在城市的文档?我知道如何使用HTML5,但我想使用geocoder的价值。谢谢 # app/models/user.rb geocoded_by :ip_address, :latitude => :lat, :longitude => :lon after_validation :geocode 来自geocoder的代码片段。您可以用两种不同的方式来完成 1) 若你们可以把访客的城市/地址作为一个字符串,那个么地理编码器将自动将其转换为纬度和经度

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

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

来自geocoder的代码片段。

您可以用两种不同的方式来完成

1) 若你们可以把访客的城市/地址作为一个字符串,那个么地理编码器将自动将其转换为纬度和经度

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

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

end
class消息
2) 否则,您将不得不跟踪访问者的ip,例如“geocoder”gem上的

注意:您可以使用如下的near-by方法

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

Ex: @messages = @messages.near("colombo", 10, :order => :distance)
我是怎么做到的-

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

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

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

request.location.city
有这个例子,但我认为我需要声明请求,但不需要,不需要更多


如果您没有Geocoder,您必须安装gem,但除此之外什么都没有。

我实际上是在寻找它如何为访问者而不是用户返回“nearbys”方法结果。当我这样做时,控制台会显示空结果。当我在地球上的时候;)当我遵循这个示例时,我得到一个NameError,它说“request”未定义。为什么你没有同样的问题?