3

Railsアプリ。プロジェクトとタスクモデルがあります。タスクには、所属するプロジェクトを設定するための列project_idと、時間の経過に伴うタスクの完全性を示すいくつかの完全性列があります(したがって、「completeness_at_3hours」、「completeness_at_6hours」などの列があります)。タスクの完全性の。

次に、プロジェクトに属するタスクの時間の経過に伴う完全性をグーグルチャートでグラフ化する必要があります。

私のプロジェクトコントローラーには

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

選択したプロジェクトのタスクが@tasksにあるので、Googleグラフスクリプトにデータを含めるにはどうすればよいですか?

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 %>

しかし、どうすれば同じことをグーグルチャートスクリプト内で行うことができますか?

どうもありがとう!!

4

1 に答える 1

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

このコードは、すべてのタスクが同時に開始され、データベースが「タスク」と呼ばれることを前提としています。また、それはおそらくかなり粗雑であり、いくつかの改善を使用することができます。

于 2012-04-22T23:34:35.223 に答える