2012-04-22 11 views
3

Rails App。私はプロジェクトとタスクモデルを持っています。タスクには、そのプロジェクトが属するプロジェクトを設定するためのproject_idという列があり、時間の経過とともにタスクの完全性を示すための完全な列がいくつかあります(したがって、「completeness_at_3hours」、「completeness_at_6hours」などの列があります)。タスクの完全性。Rails。配列からGoogleのグラフスクリプトに値を渡す方法。

私は今、プロジェクトに属するタスクの時間にわたって完全性をGoogleのグラフでグラフにする必要があります。私は今、私はGoogleのチャートスクリプトでデータが含まれるであろうか、@tasksで、選択したプロジェクトのタスクを持っていること、だから、

@tasks = Tasks.where("project_id = ?", params[:id]) 

を持っている私のプロジェクトのコントローラで

function drawChart() { 

     var data = google.visualization.arrayToDataTable([ 
      ['Time', '<%= @task.name %>', '????????'], 
      ['<%= @task.created_at %>', <%= @task.zerohours %>, '?????????'], 
      ['<%= @task.created_at + 3.hours %>', <%= @task.threehours %>, '????????'], 
      ['<%= @task.created_at + 6.hours %>', <%= @task.sixhours %>, '????????'], 
      ['<%= @task.created_at + 9.hours %>', <%= @task.ninehours %>, '????????'], 
      ['<%= @task.created_at + 12.hours %>', <%= @task.twelvehours %>, '????????'] 
     ]); 

これは1つのタスクのみ(先ほど作成されたもの)のために動作しますが、どのように私は、スクリプトに@tasksに含まれるすべてのデータを渡すのですか?

私が使用する単純なテーブル内のデータを取得するために、意味:

<% @tasks.each do |task| %> 
<%= @task.threehours %> 
<%= @task.sixhours %> 
<%= @task.ninehours %> 
<%= @task.twelvehours %> 
<% end %> 

しかし、私はどのように同じことを行うが、Googleのチャートスクリプト内部のですか?

ありがとうございます!

+0

これはユーザーがやりとりしているものなのでしょうか、まさに表示されていますか? IE。私はあなたの質問の文脈を見ることができるように関連するコントローラコードを追加してください。 – Andrew

答えて

3

疑問符の代わりに追加のタスクを渡したいと言う限り、そうですか?もしそうなら、私は解決策を持っています。まず、関数内のコードをラップすることがあります:

var data = google.visualization.arrayToDataTable(<%= make_a_chart %>); 

し、対応するヘルパーのどこかにそれを置く:このコードは、すべてのタスクが同時に開始されていることを前提とし、データベースが "と呼ばれていることを

def make_a_chart 
    result = [] 
    result.push make_labels, 
       make_data(0, "zerohour"), 
       make_data(3, "threehours"), 
       make_data(6, "sixhours"), 
       make_data(9, "ninehours"), 
       make_data(12, "twelvehours") 
    return result 
end 

def make_labels 
    y = ["Time"] 
    for task in Task.all do 
    y.append task.name 
    end 
    return y 
end 

def make_data(time, completeness) 
    y = Task.first.created_at + time 
    for task in Task.all do 
    y.append task[completeness] 
    end 
    return y 
end 

仕事"。また、ほとんど原油であり、いくつかの改良を加えることができます。

+0

それはまさにそれでした!ありがとうございました! –

関連する問題