2015-11-01 48 views
0

我有一個名爲sales_hash的散列,我打印出來了。每個散列都有一個名爲sku的密鑰,它與array_items數組內的散列相匹配。我從數組中得到散列,並試圖打印基於:item的密鑰的散列值,但我一直收到錯誤。我究竟做錯了什麼?打印出來自數組的散列值

sales_hash.take(10).each do |a, b| 
    temp_hash = array_items.select{|array_items| array_items[:sku] == a} 
    puts temp_hash 
    puts "Sku is #{a} the amount sold is #{b} the name of the book is #{temp_hash[:price]}" 
end 

#{temp_hash[:item]}"不斷給我一個錯誤

+0

什麼是錯誤信息? –

+0

Do:'puts temp_hash.inspect'並且看看你在'temp_hash'裏面得到了什麼 –

+0

@DJ錯誤信息是rb:59:在'[]'中:沒有將符號隱式轉換爲整數(TypeError) – Aaron

回答

1

temp_hash實際上是一個數組。

Docs

選擇 - >返回包含所述給定塊返回一個真值進制中的所有元素的新數組。

而且你不能像這樣訪問數組:array [:key]。

1

由於您的temp_hash是一個數組,這樣你就可以像這樣訪問期望的散列:

temp_hash[0] # this will give you the expected hash data 

而且,那麼你就可以訪問所需的密鑰散列內部(如price):

temp_hash[0][:price] 
1

由於temp_hash是一個數組,並且您確信該數組中只有一個項目,所以獲取temp_hash內容的正確方法是使用「first」,如下所示:

#{temp_hash.first[:price]}