2012-01-02 4 views
0

Rails 2.35/Ruby 1.87グラフの作成 - JSステートメントにRails変数を挿入するだけでJSON/XMLの利点?

私は試してきましたjqplot

私はいつもビューのXMLをレンダリングしたビルダーファイルを使用していました。 jqPlotを使用して、単にデータ文字列を作成してグラフを生成するJavaScriptに挿入できるのであれば、JSONファイル(その他)をレンダリングする理由はありますか?

また、jqPlot Railsのサンプルが見つかりませんでした。私がやったことがどのように良く書かれたのか(または私がここで大丈夫だったかどうか)、私は興味があった。

ありがとうございます!

CONTROLLER 
    --------------------- 
def provisioned_accounts 
    sql = %Q{ 
      SELECT day_of, provisioned_accounts from daily_provisioned_accounts_rollup 
      } 
    graph_data = DailyProvisionedAccountsRollup.find_by_sql(sql) 

    @graph_data = '' 
    x = 0 
    graph_data.each do |g| 
     x += 1 
     if x == 1 
     @graph_data += "['" + g.day_of.to_s + "', " + g.provisioned_accounts.to_s + "]" 
     else 
     @graph_data += ", ['" + g.day_of.to_s + "', " + g.provisioned_accounts.to_s + "]" 
     end 
    end 
    end 

    VIEW 
    --------- 
    <div id="chart1" style="height:300px; width:800px;"></div> 

    <script type="text/javascript"> 
    $(document).ready(function(){ 
     var line1=[<%= @graph_data %>]; 
     var plot1 = $.jqplot('chart1', [line1], { 
      title:'Provisioned Accounts', 
      axes:{ 
      xaxis:{ 
       renderer:$.jqplot.DateAxisRenderer, 
       tickOptions:{ 
       formatString:'%b&nbsp;%#d' 
       } 
      }, 
      yaxis:{ 
       tickOptions:{ 
       formatString:'%.0f' 
       } 
      } 
      } 
     }); 
    }); 
</script> 

答えて

1

ここでは多少異なることがあります。

このような何かと呼ばれる DailyProvisionedAccountsRollupの方法にあなたのfind_by_sqlを移動

def provisioned_accounts 
    @graph_data = DailyProvisionedAccountsRollup.summary 
end 

最後に、あなたのビューであなただけの使用:あなたのコントローラであなただけのこの操作を行うことができ、その後

class DailyProvisionedAccountsRollup < ActiveRecord::Base 
    ... 

    def self.summary 
    all.map do |record| 
     [ record.day_of, record.provisioned_accounts ] 
    end 
    end 
end 

@graph_data.to_json

<div id="chart1" style="height:300px; width:800px;"></div> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
    var line1=<%= @graph_data.to_json %> 
    var plot1 = $.jqplot('chart1', [line1], { 
     title:'Provisioned Accounts', 
     ... 

これはすべてテストされていないde、しかしそれはあなたのコントローラを掃除を開始する必要があります。

+0

ありがとうございました。 – Reno

関連する問題