2014-03-05 37 views
1

我已經搜索了堆棧溢出,但沒有找到任何答案與它有關。需要國家名稱從請求或與ip_address

用下面的這一行我們可以得到請求的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> 

但IP地址目前是在印度和它給我的國名「保留」

任何一個幫助將敢於讚賞

+0

這裏您使用的是C類IP地址,LAN IP地址,因此它可能會被給予保留國家代碼 –

+0

所以我應該給什麼,你可以請建議我得到正確的國家名稱。 –

回答

1

使用geoip寶石,

訪問此SO更多的和詳細的解答。

如果你不想使用寶石,然後用下面簡單的代碼: -

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" 
+0

雅我已經嘗試過,但它給了我沒有.dat文件在您的電腦中找到。 –

+0

使用此區域設置= Timeout :: timeout(5){Net :: HTTP.get_response(URI.parse('http://api.hostip.info/country.php?ip='+ request.remote_ip))。body }救援「美國」 當我使用我的IP地址時,它重新「IN」 –

+0

您可以知道您的IP地址,它可能以122.xxx.xxx.xxx開頭,使用 –

相關問題