Не удается получить доступ к содержимому массива геокодеров в 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>] 

но я не могу понять, как получить доступ к результатам. Я пробовал:

результаты. @ data.zip_code, результаты [@data.zip_code], результаты [@data.results] и почти все остальные комбинации, о которых я только мог подумать. Есть идеи?

2 ответа

Решение

Обратите внимание, что это возвращает массив. Это означает, что вам нужно сделать что-то вроде:

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

Как 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']
. . . 
. . . 
Другие вопросы по тегам