如何在 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)}]
我的 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)}]