2016-07-23 34 views
0

私はgem groupdateとgem chartkickをインストールしており、すでにサーバを再起動しています。私はshow.html.erbにgroup_by_dayでソートしたグラフを表示することができます。私は、PostgreSQLデータベースを使用してい未定義のメソッド `group_by_day 'error rails

show.html.erb

<%= @material.current_stock %> 
<%= line_chart @material.group_by_day(:updated_at).sum(:current_stock) %> 

コントローラ/ material_controller.rb私はクラス

<%= line_chart Material.group_by_day(:updated_at).sum(:current_stock) %> 

を使用して宣言するときには、正常に動作しています

def show 
    @material = Material.find(params[:id]) 
end 

私がマテリアルを@materialに置き換えたときはそうではありません。これは、クラスメソッドと配列との仕事でなければなりません

+0

'sqlite' DBを使用していますか? – uzaif

+0

@uzaif、私はpostgresqlを使用しています – hazimIskandar

+0

'Groupdate Gem'でちょっとしたゴツチがあります。これを修正するには 'created_at'をそれぞれのタイムゾーンに変換する必要があります。詳細については、[私の質問](http://stackoverflow.com/questions/36178726/rails-group-by-hour-of-the-day-for-created-at-column)を参照してください。また、オブジェクトではなくActiveRecordクラスに対して 'group-by-day'を呼び出さなければなりません。 – VKatz

答えて

0

、これはあなたのコントローラのメソッドgroup_by_dayは、クラス全体またはいずれかのために働く

0

コントローラ/ material_controller.rb

def show 
    @material = Material.where(id:params[:id]) 
end 

変更単一の@materialオブジェクトをグループ化する用途はありません。あなたが使用できるクラス全体については

、材料のグループのために

Material.group_by_day(:updated_at).sum(:current_stock)

@materials = Material.where('your logic') 

@materials.group_by_day { |u| u.updated_at }.sum(:current_stock) 

しかし、あなたがしようと、単一のオブジェクトのためにグループ化したい場合は、

@material = Material.where('your logic').first 

@material.group_by_day { |u| u.updated_at }.sum(:current_stock) 
関連する問題