2017-01-28 12 views
0

私はこれで一日あたりminutes_outを総括しようとしていた:のRails:未定義のメソッド `nilのために「注入:NilClass

<%= @activities.where(created_at: date.midnight..date.end_of_day).map(&:minutes_out).compact!.inject(0){ |sum, i| sum + i } %> 

私は取得していますエラーは次のとおりです。未定義

メソッド `inject 'for nil:NilClass意味しましたか?検査

+0

'!'を付けずに 'compact 'を試してください。 – HarlemSquirrel

答えて

1

なぜこの複雑な計算が必要ですか? minutes_outが整数の場合

@activities.where(created_at: date.midnight..date.end_of_day).sum(:minutes_out) 

はあなたに答えを与えます。

3

compact!重複がない場合はnilを返します。代わりにcompactを使用してください:

<%= @activities.where(created_at: date.midnight..date.end_of_day) 
       .map(&:minutes_out) 
       .compact 
       .inject(0) { |sum, i| sum + i } %> 

ただ、サイドノート:一部のビューで、このような複雑なクエリを有するコードのにおいであることを主張するかもしれません。クエリをコントローラに移動する方が良いかもしれません。

関連する問題