我正在尝试在Highcharts函数中实现动态JSON对象,我想知道是否有一种聪明的ruby方法来执行此操作。
基本上我在我的rails应用程序中有用户,每个用户都有一个ISO-a2格式的原籍国。我需要将每个国家/地区的成员数量设为这种格式....(值将是动态变量)
var data = [{"code":"AF","value":"<%= ruby code %>"},
{"code":"AX",.......and so on
我可以从
开始 country_array = Array.new
User.all.map{|u| country_array << u.country}
但是我的尝试导致了可怕的长期混乱。如果有一种聪明的方法可以做到这一点的建议会很棒。
答案 0 :(得分:1)
User.all.group_by(&:country).map{|k,v| [k, v.count]}.to_h
这应该会为您提供一个哈希,其中包含国家/地区代码作为密钥以及将该国家/地区代码作为值的用户数。
答案 1 :(得分:0)
您可以使用数据库而不是Ruby来计算结果:
counts = User.group_by(:country).count.map { |code, count|
{ "code" => code, "value" => count }
}