Hash 从Ruby on Rails数据库准备要在d3.js中绘图的数据
我在数据库中有一个专栏,上面有对下拉式“推荐来源”问题的回答。我正在查询并返回一个哈希:Hash 从Ruby on Rails数据库准备要在d3.js中绘图的数据,hash,ruby-on-rails-3.1,d3.js,Hash,Ruby On Rails 3.1,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
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数据
如何将数据转换为本例直接使用的rails格式。换句话说,我希望我的数据看起来像一个要传递给视图中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。我花的时间比我想象的要长得多。如果你想了解更多信息,你可能想试试这个例子[看看你是否可以将其水平/使用你的数据。当你开始时,它可能相当密集,但大约50行代码是可以管理的。嗨,亚当,谢谢你的评论。这是一个很好的干净条形图。你能再检查一下链接吗?文本似乎是正确的,但点击它会将我带到一个不存在的页面。