如何从Geocoder gem获取城市名称和远程IP地址?

时间:2014-01-06 10:08:34

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

Rails 4 + Ruby 2 + Geocoder gem

控制器操作

def index
 @your_id = request.ip #here i am getting localhost IP address like "127.0.0.1"
 binding.pry
end

我认为在@your_id中,它应该捕获IP地址而不是本地主机IP地址(“127.0.0.1”)。

但是在视图中我需要显示依赖于我的位置示例的城市,如果你在纽约市,那么它应该动态地显示纽约市(通过IP地址)。

知道如何获取city_name和IP地址吗?

1 个答案:

答案 0 :(得分:4)

地理编码器gem在请求对象(source)上提供#location方法,该方法返回纬度和经度的位置结果:

request.location

=> #<Geocoder::Result::Freegeoip:0x007f8ecca5d608
@cache_hit=true, @data= {
"ip"=>"199.21.87.210", "country_code"=>"US",
"country_name"=>"United States", "region_code"=>"CA", "region_name"=>"California",         "city"=>"Berkeley", "zipcode"=>"", "latitude"=>37.8716, "longitude"=>-122.2728,     "metro_code"=>"807", "areacode"=>"510"
}>

要在浏览器中测试此功能,请尝试使用ngrok公开本地服务器并在控制器中抛出一些调试器语句,以查看request.location对象的外观。