如何在 Chartkick 中使用 Rails 中的每个操作

How to use each do in Rails within 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 中有不止一个值,但它只显示最后一个值。我怎样才能对这个数据字段使用 each do?

提前致谢

更新:

我已将我的数据字段更改为:

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

更改后的结果如下: Column Chart

你应该使用 map 而不是 each 因为你想转换 @values 数组:

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

我改变了思维方式,不再使用 .each/.map 做。我用过 "group" 和 "DATE_TRUNC"。我的问题的答案如下:

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