Das Problem mit Ihrem Code ist, dass Sie nicht das korrekte Datenformat an die line_chart
übergeben. ein Liniendiagramm die Daten zeichnen im Format eines Hash sein muss, wie folgt aus:
<%= line_chart {"2016-05-21 23:50:40 UTC"=>20, "2016-05-21 23:50:57 TC"=>23} %>
{ "2016.05.21 23.50.40 UTC" => 20, „2016.05.21 23.50.57 UTC "=> 23}
In vorherigem Beispiel Sie Daten (Strings) als Schlüssel zu dem Hash und die Werte (Integer) sehen 20 und 23 In Ihrem Fall, dass Sie einen Hash benötigen wo die Schlüssel sind die Daten und Werte der Hash sind die max, min oder aktuelle Temperatur. { "Datum_1" => Nummer "Datum_2" => Nummer, ...}
Zu meinem Code zu testen Ich habe ein Modell Temperatur genannt. Hier ist die Tabelle:
create_table "temperatures", force: :cascade do |t|
t.integer "max", limit: 4
t.integer "min", limit: 4
t.integer "current", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Aus meiner Sicht ich das genannt:
<%= line_chart [
{name: "Series A", data: Temperature.all.inject({}) {|res, v| res[v[:created_at]] = v.max; res }},
{name: "Series B", data: Temperature.all.inject({}) {|res, v| res[v[:created_at]] = v.current; res }},
{name: "Series C", data: Temperature.all.inject({}) {|res, v| res[v[:created_at]] = v.min; res }}
] %>
Und ich habe das Grundstück mit 3 Linien zeigen, max, min und die aktuelle Temperatur im Laufe der Zeit.
![enter image description here](https://i.stack.imgur.com/8MIQ5.png)
verwendete ich inject eine Hash zu schaffen, wo Schlüssel sind Daten und Werte sind die Attribute [max, min, Strom] Modell Temeperature. Für weitere Informationen zu injizieren Methode, lesen Sie .
In Ihrem Fall sollten Sie dies versuchen:
<%= line_chart [
{name: "Series A", data: @tray.datalogs.inject({}) {|res, v| res[v[:created_at]] = v.ambmax; res }},
{name: "Series B", data: @tray.datalogs.inject({}) {|res, v| res[v[:created_at]] = v.ambcur; res }},
{name: "Series C", data: @tray.datalogs.inject({}) {|res, v| res[v[:created_at]] = v.ambmin; res }}
] %>
Sie haben ** groupdate ** gem installiert? –
@RareFever nein Ich habe es auskommentiert, weil es nicht mit meiner Dev-Datenbank funktioniert, aber funktioniert in pg. Also die Empfehlung war, Dataslices zu verwenden. – mGarsteck
können Sie das Beispiel "Timeline" rendern? dataslices ist ein Juwel? Wenn ja, hinterlassen Sie einen Link. –