Active Record Query范围

时间:2014-05-13 18:27:41

标签: ruby-on-rails activerecord ruby-on-rails-4

我正在尝试用循环中的变量构建一个饼图:

<% @something.cool.each do |t| %>
  <%= t.foo %>
<% end %>

此循环的输出例如:

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 45 45 45 45 45 45 45 55

这意味着差不多95% is 55's5% are 45's

所以基本上我需要一种方法让Rails找到变量组(55,45)并计算它们以便我可以显示组的百分比。

我可以在饼图(JS)上传递的选项如下所示:

series: [{
        type: 'pie',
        name: 'Browser share',
        data: [
          ['Firefox',   45.0],
          ['IE',       26.8],
          ['Chrome', 12.8],
          ['Safari',    8.5],
          ['Opera',     6.2],
          ['Others',   0.7]
        ]
      }]

我如何正确地确定这个范围,以便我可以在我的图表中使用它?

1 个答案:

答案 0 :(得分:1)

Enumerable#group_by是你的朋友:

grouped = [55, 45, 55, 55, 55, 45, 12].group_by { |e| e }
grouped.each do |in_common, occurences|
  puts "There is #{occurences.size} occurences for the word '#{in_common}'\n"
end

它告诉您每个号码的出现次数。


在您的情况下,使用百分比计算:

results = [55, 45, 55, 55, 55, 45, 12]
@grouped = results.group_by { |e| e }

series: [{
        type: 'pie',
        name: 'Browser share',
        data: [
          <% @grouped.each do |legend, values| %>
            <%= "['#{legend}', #{values.size}]," %>
          <% end %>
        ]
      }]