我的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
答案 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)}]