2016-05-21 3 views
2

私はフォームを介してユーザによって毎日追加されるデータを持っています。 これはデータログを持つトレイのすべての部分ですChartkickを使用してデータを表示する

私はchartkickとその偉大さを使用していますが、データを表示する方法がわかりません。これらのフィールドのいくつかは温度を記録しています:ambcur、ambmin、ambmax​​ etc.時間。

複数のラインカードを作成しようとしています。

<%= line_chart [ 
       {name: "Series A", data: @tray.datalogs.ambcur}, 
       {name: "Series B", data: @tray.datalogs.ambmin} 
      ] %> 

また、単数の線図も機能しません。

<%= line_chart @tray.datalogs.group(:ambcur).count %> 

誰かが正しい方向に私を助けることができますか?ありがとう:)

+0

をあなたは** groupdate **宝石がインストールされていますか? –

+0

@RareFeverいいえ私はそれが私のdevデータベースで動作しないのでコメントアウトしていますが、pgで動作します。そのため、データスライスを使用することをお勧めしました。 – mGarsteck

+0

「タイムライン」という例をレンダリングできますか? dataslicesは宝石ですか?もしそうなら、リンクを残す。 –

答えて

4

あなたのコードの問題は、正しいデータ形式をline_chartに渡していないことです。このように、データは、ハッシュの形式である必要があり折れ線グラフを描画するには:

<%= line_chart {"2016-05-21 23:50:40 UTC"=>20, "2016-05-21 23:50:57 TC"=>23} %> 

{「2016年5月21日午後11時50分40秒UTC」=> 20、「2016年5月21日を23:50:57 UTC "=> 23}

上記の例では、ハッシュのキーとして日付(文字列)が表示され、値(整数)は20と23です。 あなたの場合はハッシュが必要ですここで、キーはハッシュの日付と値で、最大、最小または現在の温度です。 { "DATE_1" =>数、 "日付2" =>数、...}

私のコードをテストするために、私は温度というモデルを作成しました。

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 

私の見解で、私はこれを呼ばれる:ここでは、テーブルである

<%= 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 }} 
      ] %> 

は、私は時間をかけて最大、最小と現在の温度を示す3線でプロットを得ました。

enter image description here

Iは、キー日付および値属性[MAX、MIN、現在] Temeperatureモデルのされているハッシュを作成するために注入を用います。 メソッドの追加情報については、this stackoverflow threadを参照してください。あなたはこの試してみてください、あなたの場合は

<%= 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 }} 
       ] %> 
+0

ありがとうございました。 – mGarsteck

+1

はい、これは実際に機能しました。助けてくれてありがとう!!!! – mGarsteck

関連する問題