3

データベースに、ドロップダウンの「参照元」の質問への回答を含む列があります。私はそれを照会し、ハッシュを返しています:

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 を使用して棒グラフとしてプロットしたいと考えています。グラフに表示させたいのとまったく同じように見えるグラフで、この素敵なd3.js の例を見つけました。私の問題は、例がCSVデータを使用していることです。

この例で使用する形式にデータを変換するにはどうすればよいですか。言い換えれば、ビューで JavaScript に渡すオブジェクトの配列のようにデータを表示したいと考えています。

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

そのハッシュ (またはクエリ) を変更して目的の形式にする方法を教えてください。

4

1 に答える 1

7

D3-generator.comは、 D3.jsを使い始めるための優れたリファレンスです。D3 のチュートリアルも役に立ちましたが、ラベル付きの横棒グラフは表示されませんでした。

ハッシュを新しい配列に再マッピングすることで質問を解決しました。元のクエリでこれを行うことは可能かもしれませんが、私はそれを実現するための Activerecord/SQL に強いわけではありません。

これは、Ruby の D3-generator で使用できるオブジェクトの配列にハッシュを再マップする方法です。

@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 を実行しました。理解するのに思ったよりもずっと時間がかかりました。

于 2013-07-11T19:33:22.673 に答える