Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何从Geocoder gem获取城市名称和远程IP地址?_Ruby On Rails 4_Rails Geocoder - Fatal编程技术网

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

Ruby on rails 4 如何从Geocoder gem获取城市名称和远程IP地址?,ruby-on-rails-4,rails-geocoder,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地址) 知道如何获取城市

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地址)


知道如何获取城市名称和IP地址吗?

地理编码器gem在请求对象()上提供了一个
\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"
}>
=>#“199.21.87.210”,“国家代码”=>“美国”,
“国家名称”=>“美国”、“地区代码”=>“加利福尼亚”、“地区名称”=>“加利福尼亚”、“城市”=>“伯克利”、“zipcode”=>、“纬度”=>37.8716、“经度”=>-122.2728、“地铁代码”=>“807”、“区号”=>“510”
}>

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

geocoder gem在请求对象()上提供了
#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"
}>
=>#“199.21.87.210”,“国家代码”=>“美国”,
“国家名称”=>“美国”、“地区代码”=>“加利福尼亚”、“地区名称”=>“加利福尼亚”、“城市”=>“伯克利”、“zipcode”=>、“纬度”=>37.8716、“经度”=>-122.2728、“地铁代码”=>“807”、“区号”=>“510”
}>
要在浏览器中测试此功能,请尝试使用公开本地服务器,并在控制器中抛出一些调试器语句,以查看
request.location
对象的外观