2015-11-01 47 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]}