Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 从Ruby on Rails数据库准备要在d3.js中绘图的数据_Hash_Ruby On Rails 3.1_D3.js - Fatal编程技术网

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行代码是可以管理的。嗨,亚当,谢谢你的评论。这是一个很好的干净条形图。你能再检查一下链接吗?文本似乎是正确的,但点击它会将我带到一个不存在的页面。