如何在Chartkick中使用Rails中的每一个

时间:2016-04-13 08:19:49

标签: ruby-on-rails chartkick

我的HTML看起来像:

<%= column_chart @data, stacked: true %>

在我的控制器中,我创建了数据字段:

@values = WorkingMonth.select("date_end","workload").where(personal_id: @current_employee.personal_id)
@values.each do |data|
@data = [
    {
    name: "Available",
    data: []
    },
    {
    name: "Workload",
    data:[[data.date_end.strftime("%B"),data.workload]]
    }
]
end

我的问题是@values中只有一个值,但它只显示最后一个值。如何使用每个数据字段?

提前致谢

更新:

我已将数据字段更改为:

@data = @values.map do |value|
@data = [
    {name: "Available", data: []},
    {name: "Workload", data:[[value.date_end.strftime("%B"),value.workload]]}
]
end

更改结果后看起来像: Column Chart

2 个答案:

答案 0 :(得分:1)

您应该使用map代替each,因为您需要转换@values数组:

@data = @values.map do |value|
[
  { name: "Available", data: [] },
  { name: "Workload", data: [[value.date_end.strftime("%B"),value.workload]] }
]
end

答案 1 :(得分:0)

我改变了思考方式并停止使用.each / .map做。我已经使用了&#34; group&#34;和&#34; DATE_TRUNC&#34;。我的问题的答案如下:

@data = [{name: "Workload", data: WorkingMonth.where(personal_id: @current_employee.personal_id).group("DATE_TRUNC('Month', date_end)").sum(:workload)}]