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

Can't Access Contents of Geocoder Array in Rails

我正在使用地理编码器中的搜索功能,特别是用于 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>] 

但我不知道如何访问结果。我试过:

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

由于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']
. . . 
. . . 

注意这个returns一个数组。这意味着您需要执行以下操作:

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