我有一個模塊,當整理數據以在視圖中顯示時,我想使用它。在終端方面,我嘗試將模塊從這樣傳遞參數時發生NilClass錯誤
> include BeforeOrAfter
> s = s.Artist.find(1)
> s.events.each do |event|
> before_or_after(event)
> end
這導致了錯誤NoMethodError: undefined method '<<' for nil:NilClass
。 這裏是我的模塊:
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
編輯:在控制檯各地的發揮,並試圖這樣,它的作品。現在爲什麼在將所有東西都交給模塊處理時不工作?
> 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,它不會引發錯誤。所以是的,我的初步答案可能不正確:) 當我餵食obj.before_or_after OpenStruct但沒有定義日期時,它確實返回了'NoMethodError:未定義的方法'<'爲nil:NilClass'錯誤。我意識到你將錯誤報告爲'<<',只是再次檢查這不是同一個問題。如果是這樣,那麼你可能想檢查你的事件對象,並確保他們有一個日期屬性。 – josh
如果我將'.date'取出並使其成爲'如果事件
sivanes