从RubyonRails数据库中准备用d3.js绘制的数据



我在数据库中有一列,其中包含对下拉列表的响应"推荐源";问题我正在查询并返回一个散列:

Clients.count(:all, :group => :referral_source)

这导致了以下散列:

{"Internet search (e.g., Google)?"=>26, 
 "Personal referral (e.g., friend or family)"=>23, 
 "Other"=>11, ""=>51, 
 "Listserv (e.g., neighborhood listserv)"=>5,
 "Walk by"=>5}

在视图中,我想用d3.js将这些结果绘制成条形图。我发现这很好,因为它的图表看起来和我希望的图表完全一样。我的问题是这个例子使用CSV数据。

如何将数据转换为本例直接使用的格式。换句话说,我希望我的数据看起来像一个要传递给视图中javascript的对象数组:

var data = [ {"Name": "Internet search (e.g., Google)?", "Count": 26},
             {"Name": "Personal referral (e.g., friend or family)", "Count": 23},
             ... ]

如何修改该散列(或查询)以将其转换为所需格式?

我通过将哈希重新映射到一个新数组来解决问题。似乎可以用原始查询来实现这一点,但我不太擅长Activerecord/SQL。

以下是我如何将散列重新映射到Ruby 中可以与D3生成器一起使用的对象数组

@referral_source = Client.count(:all, :group => :referral_source)
remap = @referral_source.map {|k, v| { Name: k, Count: v} } 
=> {{:Name=>"Internet search (e.g., Google)?", :Count=>26}, ... ]

然后我在视图中对此做了一个.to_json。我花的时间比我想象的要长得多。

最新更新