无法在Rails中访问Geocoder数组的内容

时间:2015-10-25 03:55:27

标签: ruby-on-rails rails-geocoder

我在地理编码器中使用搜索功能,特别是IP地址的搜索功能:

Geocoder.search("204.57.220.1")

当我在控制台中输入命令并将结果存储为变量时,我可以查看内容:

[#<Geocoder::Result::Freegeoip:0x0000000241d848 @data={"ip"=>"204.57.220.1", 
"country_code"=>"US", "country_name"=>"United States", "region_code"=>"WA",
"region_name"=>"Washington", "city"=>"Redmond", "zip_code"=>"98052", 
"time_zone"=>"America/Los_Angeles", "latitude"=>47.674, "longitude"=>-122.122, 
"metro_code"=>819}, @cache_hit=nil>] 

但我无法弄清楚如何访问结果。我试过了:

结果。@ data.zip_code,结果[@ data.zip_code],结果[@ data.results]以及我能想到的几乎所有其他组合。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

Geocoder.search("204.57.220.1")返回一个数组时,你必须先获取数组的第一个元素,然后抓住data

这样做:

results = Geocoder.search("204.57.220.1")
data = results.first.data

这将为您提供data哈希值,然后您可以从中提取所需的数据:

puts data['zip_code']
puts data['ip']
. . . 
. . . 

答案 1 :(得分:0)

请注意,这会返回一个数组。这意味着您需要执行以下操作:

results = Geocoder.search("204.57.220.1")
first_result = results.first
p first_result.data
p first_result.data['ip']