2012-05-02 16 views
7

Ruby on Rails 2.3.14アプリケーションで折れ線グラフを表示するためのWebページを作成しようとしています。私はJavascriptを使って素敵なグラフを作成することができるJS Chartsというツールを見つけましたが、必要なデータを送るのに問題があります。静的な線グラフを作成する方法は次のとおりです。Ruby配列をJavascriptに渡して折れ線グラフを作成するには

<script type="text/javascript"> 
    var myData = new Array([1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]); 
    var myChart = new JSChart('chartcontainer', 'line'); 
    myChart.setDataArray(myData); 
    myChart.draw(); 
</script> 

このコードをstats.html.erbに入れて表示します。しかし、私はそれを提供する線グラフのデータを表示する必要があります。 2次元配列は、コントローラに作成されます。

>> @a 
=> [[1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]] 

私は、ビューでその変数を使用することができる、とのようなもので、それにvar myDataを設定する必要があります。私は他のものを試してみました

var myData = "<%= @a %>"; 

like:

var myData = JSON.parse("<%= @a.to_json %>"); 

しかし、何も動作していないようです。何か私にできることはありますか?

EDIT:

空だったビュー(@a)に渡されたアレイコントローラ、との問題がありました。私は以下を使用することができました:

var myData = JSON.parse("<%= @a.to_json %>"); 

適切なデータをビューに渡して表示するには、

<%= javascript_tag do %> 
    window.myData = <%=raw @a.to_json %>; 
<% end %> 

またはレール3のあなたはスーパーHTML5のサヴィなると、いくつかのATTとして、あなたのデータを追加するdataヘルパーを使用することができます。

+0

良い質問なぜあなたの例がうまくいかないのか分かりません。あなたが.erbファイルになっていて、ルビ補間がうまくいくと仮定しています。たぶん、文字列に補間しようとしますか?あなたがそれを入力したかのように、Rubyがスクリプトに何を注入するかを評価するためです。 – Andrew

+0

@ericは、結果ページの生成されたHTMLを貼り付けます。 – Abid

+0

待って、何とか今回はうまくいった。コントローラがビューに渡したデータに問題があったと思います( '@ a')。私は 'JSON.parse(" <%= @ a.to_json%> ");'を使いました。私は少なくともその回答に感謝します。 – Eric

答えて

8

はあなたのようなのは、それが働いてしまったが、あなたは少し物事をクリーンアップすることができ見えますhtmlタグ:(jQueryを使って)JavaScriptでのその後で、次に

<%= content_tag "div", id: "myDiv", data: {stuff: @a} do %> 
<!-- some html stuff...--> 
<% end %> 

と:

var myData = $('#myDiv').data("stuff") 

とスーパーケレンのために、チェックアウトthis railscast

関連する問題