2014-11-05 97 views
0

背景:一个联盟有很多玩家,其中有很多城镇。每个城镇都属于海洋百分比计算 - Ruby on Rails的

我的问题:

我试图计算在一定的海洋城镇的百分比。例如:

<% @alliance.players.each do |p| %> 
    <% p.towns.each do |t| %> 
    <%= t.ocean %> 
    <% end %> 
<% end %> 

这给了我一个给定联盟的所有Town's Ocean's。输出将是这样的:

54 54 54 54 54 35 54 54 54 54 54 54 54 54 45 45 45 45 45 45 54 54 54 44 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 44 54 44 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 

所以我们有多数:54几条:44

我怎样才能计算结果,所以我得到的比例在特定的海洋城镇,所以我得到的输出例如:Ocean 54: 83%,Ocean 44: 17%

+1

你不应该在View这样的计算..做控制器内,然后使用视图中的变量。我没有这些数据,所以我不能尝试,但是你可以使用ActiveRecord方法在数据库级别完成所有的工作。 – 2014-11-05 16:05:03

+1

或者写一个帮手。或者更好的是,把这个逻辑推到模型上。 – BroiSatse 2014-11-05 16:06:25

回答

3

如何:

percentages = p.towns.group_by(&:ocean).map {|ocean, towns| [ocean, (towns.count/p.towns.count.to_f * 100).round(0)]}.to_h 
perentages.each {|ocean, percentage| puts "Ocean #{ocean}: #{percentage}%"} 
+0

你可以加入我的聊天吗? http://chat.stackoverflow.com/rooms/64334/percentage-calculation – 2014-11-05 16:09:52