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

时间:2012-04-09 14:12:56

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

https://github.com/alexreisner/geocoder

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

4 个答案:

答案 0 :(得分:8)

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

request.location.city

Geocoder page有这个例子,但我认为我需要声明请求,但不,不需要其他任何内容。

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

答案 1 :(得分:6)

我是怎么做到的 -

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

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

答案 2 :(得分:1)

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

来自地理编码器site的代码段。

答案 3 :(得分:1)

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

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

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

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

end

2)否则您将需要跟踪访问者的IP,例如位于'geocoder'宝石上的home page

注意:您可以按照以下方法使用

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

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

并且在railscasts

中有一个由ryan施放的超级演员屏幕