我在地理编码器中使用搜索功能,特别是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]以及我能想到的几乎所有其他组合。有什么想法吗?
答案 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']