【发布时间】:2013-12-20 04:36:06
【问题描述】:
https://github.com/alexreisner/geocoder
我找不到从 IP 地址显示访问者所在城市的文档?我知道如何使用 HTML5,但我想使用地理编码器的值。谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rails-geocoder
https://github.com/alexreisner/geocoder
我找不到从 IP 地址显示访问者所在城市的文档?我知道如何使用 HTML5,但我想使用地理编码器的值。谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rails-geocoder
我花了几个小时才意识到答案很简单:
request.location.city
Geocoder page 有这个例子,但我认为我需要声明 request 但不,不需要更多。
如果您没有 Geocoder,则必须安装 gem,但除此之外什么都没有。
【讨论】:
我是怎么做到的 -
location = Geokit::Geocoders::IpGeocoder.geocode(source_ip)
city = location.city
country = location.country
这里,source_ip 是一个字符串对象。
【讨论】:
# app/models/user.rb
geocoded_by :ip_address,
:latitude => :lat, :longitude => :lon
after_validation :geocode
来自地理编码器site 的片段。
【讨论】:
你可以通过两种不同的方式做到这一点
1) 如果您可以将访问者城市/地址作为字符串获取,则地理编码器会自动将其转换为纬度和经度
class Message < ActiveRecord::Base
geocoded_by :full_address
after_validation :geocode
def full_address
"#{city}, Sri Lanka"
end
end
2) 否则您将不得不跟踪访问者的 ip,例如在 'geocoder' gem 上的 home page 中
注意:您可以使用 near by 方法,如下所示
<Active Record Object List>.near(<City Name>, <distance>, :order => :distance)
Ex: @messages = @messages.near("colombo", 10, :order => :distance)
在railscastsrailscasts中有一个由 ryan 制作的超级骗子屏幕
【讨论】: