2013-04-01 3 views
0

Я пытаюсь получить значение :visits. Я использую этот код для доступа к значениюЗначение ключа хэша доступа в массиве хэшей

puts "#{my_hash[0]['metrics'][0][:visits]}" 

и получаю эту ошибку:

undefined method `[]' 

Отредактировано: Вот полный выход puts my_hash

{"xml"=>"<entry><id>ID_DATA</id><updated>2013-04-01T18:10:36.599Z</updated><title type=\"text\">ga:month=01 | ga:year=2013</title><link rel=\"alternate\" type=\"text/html\" href=\"http://www.google.com/analytics\" /><dxp:dimension name=\"ga:month\" value=\"01\" /><dxp:dimension name=\"ga:year\" value=\"2013\" /><dxp:metric name=\"ga:visits\" type=\"integer\" value=\"26248\" /><dxp:metric name=\"ga:bounces\" type=\"integer\" value=\"17174\" /></entry>", "id"=>"https://www.googleapis.com/analytics/v2.4/data?ids=ga:45872215&amp;ga:month=01&amp;ga:year=2013&amp;start-date=2013-01-01&amp;end-date=2013-03-28", "updated"=>Mon, 01 Apr 2013 18:10:36 +0000, "title"=>"ga:month=01 | ga:year=2013", "dimensions"=>[{:month=>"01"}, {:year=>"2013"}], "metrics"=>[{:visits=>26248.0}, {:bounces=>17174.0}]} 
{"xml"=>"<entry><id>ID_DATA</id><updated>2013-04-01T18:10:36.599Z</updated><title type=\"text\">ga:month=02 | ga:year=2013</title><link rel=\"alternate\" type=\"text/html\" href=\"http://www.google.com/analytics\" /><dxp:dimension name=\"ga:month\" value=\"02\" /><dxp:dimension name=\"ga:year\" value=\"2013\" /><dxp:metric name=\"ga:visits\" type=\"integer\" value=\"24808\" /><dxp:metric name=\"ga:bounces\" type=\"integer\" value=\"16716\" /></entry>", "id"=>"https://www.googleapis.com/analytics/v2.4/data?ids=ga:45872215&amp;ga:month=02&amp;ga:year=2013&amp;start-date=2013-01-01&amp;end-date=2013-03-28", "updated"=>Mon, 01 Apr 2013 18:10:36 +0000, "title"=>"ga:month=02 | ga:year=2013", "dimensions"=>[{:month=>"02"}, {:year=>"2013"}], "metrics"=>[{:visits=>24808.0}, {:bounces=>16716.0}]} 
{"xml"=>"<entry><id>ID_DATA</id><updated>2013-04-01T18:10:36.599Z</updated><title type=\"text\">ga:month=03 | ga:year=2013</title><link rel=\"alternate\" type=\"text/html\" href=\"http://www.google.com/analytics\" /><dxp:dimension name=\"ga:month\" value=\"03\" /><dxp:dimension name=\"ga:year\" value=\"2013\" /><dxp:metric name=\"ga:visits\" type=\"integer\" value=\"23556\" /><dxp:metric name=\"ga:bounces\" type=\"integer\" value=\"16261\" /></entry>", "id"=>"https://www.googleapis.com/analytics/v2.4/data?ids=ga:45872215&amp;ga:month=03&amp;ga:year=2013&amp;start-date=2013-01-01&amp;end-date=2013-03-28", "updated"=>Mon, 01 Apr 2013 18:10:36 +0000, "title"=>"ga:month=03 | ga:year=2013", "dimensions"=>[{:month=>"03"}, {:year=>"2013"}], "metrics"=>[{:visits=>23556.0}, {:bounces=>16261.0}]} 

Я используя метод Gattica to_hash. https://github.com/chrisle/gattica

my_hash = data.to_h['points'] 
+0

Где 'my_hash' получать набор? –

+0

Что выводится, когда вы ставите my_hash, а не 'puts '# {my_hash [0] [' metrics '] [0] [: посещения]}" '? Я хочу увидеть его полную структуру. –

+0

Вышеприведенные данные являются выходными для 'puts my_hash'. – mnort9

ответ

0

документация дает это нелепое колдовство:

puts my_hash.first.metrics.detect { |metric| metric.key == :visits }.value 
+0

Я получаю эту ошибку: 'неправильное количество аргументов (0 для 1)'. – mnort9

+0

Возможно, вы скажете, что я полный newb с RoR. Я не уверен, что хуже, моя компетенция или эта библиотека. Я могу просто попытаться найти простого клиента REST для использования вместо этого – mnort9

+0

Хорошо, что это происходит прямо из документации. Я думаю, что это библиотека. Они делают здесь довольно сложные вещи, которые не совсем стандартны. Если вы действительно хотите продолжить этот путь, откройте проблему на своем github: https://github.com/chrisle/gattica/issues –

Смежные вопросы