2015-10-25 1 views
1

Я использую функцию поиска в геокодере, в частности, один для IP-адреса:не удается получить доступ Содержания Geocoder массива в Rails

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

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

results = Geocoder.search("204.57.220.1") 
first_result = results.first 
p first_result.data 
p first_result.data['ip'] 
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'] 
. . . 
. . .