Rails应用程序。我有一个项目和一个任务模型。任务具有一列project_id来设置它们所属的项目,以及几个完整性列以指示该任务在一段时间内的完整性(所以我有一列“ completeness_at_3hours”,“ completeness_at_6hours”等),以指示从1到5的级别任务的完整性。

现在,我需要用Google图表来绘制属于一个项目的任务在一段时间内的完整性。

在我的项目控制器中

@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 %>, '????????']
        ]);


这仅适用于一项任务(刚刚创建的一项),但是如何将@tasks中包含的所有数据传递给脚本?

我的意思是,要检索一个简单表中的数据,我将使用:

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


但是,如何在Google图表脚本中执行相同的操作?

非常感谢!!

最佳答案

据我所知,您想通过其他任务代替问号,对吗?如果是这样,我有解决办法。首先,您可能需要将代码包装在一个函数中:

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


此代码假定所有任务同时启动,并且您的数据库称为“任务”。同样,它很可能还很粗糙,可以使用一些改进。

关于ruby-on-rails - 滑轨。如何将值从数组传递到Google图表脚本。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10272454/

10-09 06:50