2013-01-14 73 views
3

我得到了下面的Ruby對象返回一個值(從查詢使用garb gem的谷歌Analytics(分析)API,來自於README.md有顯示的示例通話,Exits.results(profile, :filters => {:page_path.eql => '/'})提取從OpenStruct Ruby對象

> data.results 
=> [#<OpenStruct page_path="/", exits="3706", pageviews="10440">] 

我想提取瀏覽量值(10440),但無法弄清楚如何去做。我看到我的對象,data.results是長度1array類,但data.first是OpenStruct類帶有返回值,看起來幾乎相同:

irb(main):140:0> data.results.class 
=> Array 
irb(main):141:0> data.results.length 
=> 1 
irb(main):142:0> data.first 
=> #<OpenStruct page_path="/", exits="3706", pageviews="10440"> 
irb(main):143:0> data.first.class 
=> OpenStruct 

data本身似乎是一個被稱爲ResultsSet自定義的返回類型:

irb(main):144:0> data.class 
=> Garb::ResultSet 
irb(main):145:0> data 
=> #<Garb::ResultSet:0x00000002411070 @results=[#<OpenStruct page_path="/", exits="3706", pageviews="10440">], @total_results=1, @sampled=false> 
irb(main):146:0> 

很多數據結構,但不知道如何得到我想要的值。我收集OpenStruct是有關哈希,所以我想data.first["pageviews"]會做到這一點,

NoMethodError: undefined method `[]' for #<OpenStruct page_path="/", exits="3706", pageviews="10440"> 
    from (irb):146 
    from /usr/bin/irb:12:in `<main>' 

同時data.first.keys回報nil。 。?不知道如何讓我的數據出來,(短長度-1磁盤陣列,data.results轉換爲字符串,並使用grep,這似乎瘋狂解析的任何想法

回答

3

請試試這個:

data.first.pageviews 
+0

是的,工作!非常感謝。不知道我完全理解邏輯,但非常有幫助! – cynewulf

+0

這是一個功能,改變了紅寶石1.9什麼? – chicks

+0

它不應該... – Yossi