ビューに表示するためにデータをソートする際に使用するモジュールがあります。ターミナルでは、私はこれはエラーNoMethodError: undefined method '<<' for nil:NilClass
につながるこの引数を渡す際のNilClassエラー
> include BeforeOrAfter
> s = s.Artist.find(1)
> s.events.each do |event|
> before_or_after(event)
> end
のようなモジュールを試してみてください。
module BeforeOrAfter
attr_reader :past
attr_reader :future
require "date"
def initialize
@datetime = DateTime.new
@future = []
@past = []
end
def before_or_after(event)
if event.date < DateTime.now
@past << event.id
else
@future << event.id
end
end
end
EDIT: はここに私のモジュールであるコンソールに周りの多くの演奏と、これを試みたが、それが動作します。今では、処理するモジュールにすべてを渡すときにこれがなぜ機能しないのですか?
> include BeforeOrAfter
> s = s.Artist.find(1)
> @f = []
> @p = []
> s.events.each do |event|
> if event.date < DateTime.now
> @p << event.id
> else
> @f << event.id
> end
> end
> @f
=> [17]
まだ同じエラー – sivanes
あなたがここに持っているベースの実装は、IRBで私にとってうまくいくようです。私はそれをオブジェクトに組み込み、日付属性が定義されたOpenStructにフィードし、エラーをスローしません。だからええ、私の最初の答えはおそらく間違っているでしょう:) OpenStructのobj.before_or_afterに日付が定義されていない状態でフィードしたとき、 'NoMethodError:未定義のメソッド' <'for nil:NilClass'エラーが返されました。私はあなたがあなたのエラーを「<<」を持っていると報告していることを認識しています。これは同じ問題ではないことを二重チェックするだけです。そうであれば、イベントオブジェクトをチェックし、日付属性を持っているかどうか確認することができます。 – josh
'.date'を取り出して' event
sivanes