1

我有一个用户在其酒窖中通过cellared_beers获得的啤酒列表,因此用户有很多beerscellared_beers,反之亦然。每个cellared_beer都有附加的数据,如年份和大小。将rails中的多维数组映射到数组

我想显示在页面上的用户cellared_beers的计数结果。现在,我有以下的代码,将得到数:

beer_groups = @user.cellared_beers.count(:group => [:beer_id,:year,:size]) 
=> {[1, 2008, "12oz"]=>1, [1, 2009, "12oz"]=>3, [1, 2010, "12oz"]=>1} 

如何映射出来,这样我可以显示基于beer_id,今年,大小和数量的啤酒属性?

喜欢的东西:

Foo Beer(beer.name), Bar Brewery(beer.brewery.name),2008,12oz,1 
Foo Beer(beer.name), Bar Brewery(beer.brewery.name),2009,12oz,3 
Foo Beer(beer.name), Bar Brewery(beer.brewery.name),2010,12oz,1 

回答

0

你的意思是在一个字符串,这样吗?

{[1, 2008, "12oz"]=>1, [1, 2009, "12oz"]=>3, [1, 2010, "12oz"]=>1}.each.map do |values,count| 
    beer = Beer.find(values[0]) 
    "#{beer.name}, #{beer.brewery.name},#{values[1]},#{values[2]}, #{count}" 
end 
+0

@prognar谢谢,编辑以反映您的更改。在ruby中不需要1.9 – fotanus 2013-05-08 20:14:57

+0

非常接近,但是我必须在'.map'之前添加'.each',因为它只返回第一组。 我把它放到一个数组beer_counts中,所以它看起来像: 'beer_counts = beer_groups.each.map do | values,count | beer = Beer.find(values [0]) “#{beer.name},#{beer.brewery.name},#{beer.style},#{beer.abv},#{values [1] },#{values [2]},#{count}“ end' 我的观点如何能够通过每一个? – prognar 2013-05-08 20:15:13

+0

现在你有了一个简单的字符串数组,所以'beer_counts.each'将起作用。 – fotanus 2013-05-08 20:16:35