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