2016-04-13 6 views
0

Mein HTML wie folgt aussieht:Wie jeder in Rails innerhalb Chartkick tun verwenden

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

In meinem Controller ich das Datenfeld erstellt:

in @values ​​es
@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 

Mein Problem ist, sind mehr als nur ein Wert, aber es zeigt mir nur die letzte. Wie kann ich mit diesem Datenfeld arbeiten?

Vielen Dank im Voraus

UPDATE:

Ich habe meine Datenfeld wie geändert:

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

Nach dem Wechsel das Ergebnis wie folgt aussieht: Column Chart

Antwort

0

Ich änderte den Weg zu denken und gestoppt mit .each/.map tun. Ich habe "group" und "DATE_TRUNC" verwendet. Die Antwort auf mein Problem sieht wie folgt aus:

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

Sie map verwenden sollten anstelle von each, da Sie @values konvertieren möchten array:

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

Ich habe es geändert, wie Sie mir gesagt haben, aber jetzt habe ich das Ergebnis [Objekt Objekt] –