2017-12-10 5 views
1

Ich benutze die neuesten Chartkick 2.2.5 und Rails 5.1.4 und ich versuche, Einheiten (Fahrzeuge) und ihre Status (aus/nicht verfügbar/usw.) und erhalten eine Zählung und eine Grafik über Chart Kick. HierChartkick, Gruppierung von Objekten zusammen ohne Gruppendatum, benutze group_by in Ruby

ist, was meiner Ansicht nach Code wie folgt aussieht:

<%= column_chart Status.includes(:units).order("name asc").map {|s| {name: s.name, data: s.units.group_by{|u| u.name}.count}}, library: {backgroundColor: "#F8F8F8"} %> 

Daraus ergibt sich die folgende Anzeige:

enter image description here

So ist es über die Zustände Iterieren aber ist die Anzeige nicht die Einheit Zahl für jeder Status. Vielleicht ist mein Ruby falsch oder vielleicht ist group_by nicht das was ich suche. Aber ich hatte auf etwas Hilfe gehofft.

Ich habe groupdate installiert und zeichne andere Objekte nach Tag/Woche/Monat kein Problem, jedoch benötigt dieser bestimmte Graph eine rohe Anzahl von jeder Einheit nach Status und ich bin mir nicht genau sicher, wie ich das angehen soll. Ich werde weiterhin Google und verweisen auf die Ruby API-Dokumente, aber in der Zwischenzeit wird jede Hilfe geschätzt.

aktualisieren

ich damit einige Fortschritte gemacht, aber die Zustände auf mehr als eine Einheit zugeordnet, wenn (in diesem Beispiel „Out of Service“ zu zwei Einheiten zugeordnet ist), dann zeigen die Einheiten bis doppelt so Sie können auf dem Bild sehen. Hier ist meine aktualisierte Code:

<%= column_chart Status.joins(:units).order("name asc").map {|s| {name: s.name, data: s.units.group('units.name').count}}, library: {backgroundColor: "#F8F8F8"} %> 

Hier ist das Ergebnis:

enter image description here

So gibt es irgendwo in meinem Rubin, wo ich bin nicht in der Lage die Ergebnisse eindeutig oder einzigartig zu machen. Ich habe versucht, uniq auf Zustand und Maßeinheiten zu benennen und es heraus mit nicht definierter Methode für Klasse und schlägt group_by als Alternative anstelle der Gruppe vor.

Wenn ich eine der Einheiten in einen anderen Status ändere, der nicht von einer anderen Einheit benutzt wird, dann wird das Diagramm richtig angezeigt, also denke ich, dass mein Ruby janky ist und ein bisschen Hilfe braucht.

+0

ich nicht, warum die down abstimmen Sie. Danke für das Teilen – tmow

+0

Ich weiß es auch nicht. – nulltek

Antwort

1

Ich arbeite immer noch auf der Reihenfolge der Zustände und Einheiten, aber ich war in der Lage unterschiedliche Ergebnisse zu erhalten, indem .uniq in der Methode Kette Hinzufügen wie so:

Status.joins(:units).uniq.map {|s| {name: s.name, data: s.units.group(:name).count}}