Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 需要请求中的国家名称或ip_地址_Ruby On Rails_Ruby_Ruby On Rails 3_Ip_Ip Address - Fatal编程技术网

Ruby on rails 需要请求中的国家名称或ip_地址

Ruby on rails 需要请求中的国家名称或ip_地址,ruby-on-rails,ruby,ruby-on-rails-3,ip,ip-address,Ruby On Rails,Ruby,Ruby On Rails 3,Ip,Ip Address,我已经搜索了堆栈溢出,但没有找到任何与之相关的答案 通过下面的一行,我们可以得到请求的ip地址 request.remote_ip 它的工作良好的ip地址,并给我正确的ip地址的远程机器 但是对于位置,它没有给我正确的位置 request.location 在上面这一行中,我得到的数据如下 #<Geocoder::Result::Freegeoip:0xb47eae8c @data={"ip"=>"192.168.1.183", "country_code"=>"RD",

我已经搜索了堆栈溢出,但没有找到任何与之相关的答案

通过下面的一行,我们可以得到请求的ip地址

request.remote_ip 
它的工作良好的ip地址,并给我正确的ip地址的远程机器

但是对于位置,它没有给我正确的位置

request.location
在上面这一行中,我得到的数据如下

#<Geocoder::Result::Freegeoip:0xb47eae8c @data={"ip"=>"192.168.1.183", "country_code"=>"RD", "country_name"=>"Reserved", "region_code"=>"", "region_name"=>"", "city"=>"", "zipcode"=>"", "latitude"=>0, "longitude"=>0, "metro_code"=>"", "areacode"=>""}, @cache_hit=nil>
“192.168.1.183”、“国家代码”=>“RD”、“国家名称”=>“保留”、“地区代码”=>,“地区名称”=>,“城市”=>,“zipcode”=>,“纬度”=>0,“经度”=>0,“地铁代码”=>,“地区代码”=>,@cache\u hit=nil>
但是ip地址目前在印度,它给了我一个国家名“保留”


任何一位帮助者都会义无反顾地感谢

我不是Ruby程序员,而是PHP。但我怀疑Ruby是否有一种天生的方式知道IP地址位于哪个国家。从如下站点尝试API:

使用
geoip
gem

有关更多详细的答案,请访问此网站

如果不想使用gem,请使用以下简单代码:--


好的,这是您可以参考的示例代码


这里您使用的是C类IP地址,LAN IP地址,因此它可能会提供保留的国家代码。那么我应该提供什么?请您建议我获取正确的国家名称。是的,我已经尝试过了,但它在您的PC中没有找到.dat文件。请使用此区域设置=Timeout::Timeout(5){Net::HTTP.get\u response(URI.parse当我使用我的ip地址时,你可以知道你的ip地址,它可能以122.xxx.xxx.xxx开始,使用我使用的ip并在响应1.9.2-p320:005>中得到“IN”>locale=Timeout::Timeout(5){Net::HTTP.get\u response(URI.parse('+'124.xxx.xxx'))。body}rescue“US”=>“IN”连接被拒绝-连接(2)
require 'net/http'

 locale = Timeout::timeout(5) { Net::HTTP.get_response(URI.parse('api.hostip.info/country.php?ip='; + request.remote_ip )).body } rescue "US"