[英]How to Handle Nil Errors in Rails?
處理Rails中的nil錯誤的正確方法是什么? 我經常收到如下錯誤:
NoMethodError(nil:NilClass的未定義方法“ questions”):
例如,假設我的應用程序中有一些章節,每個章節都有一個問題。 我想從當前問題中調用上一章中的問題,因此我在question.rb中編寫以下代碼:
def previous_question
self.chapter.previous.question
end
這可能會導致上述錯誤,因此我在模型中編寫了一個方法來檢查是否會導致nil結果:
def has_previous_question?
self.chapter and self.chapter.previous and self.chapter.previous.question
end
如果我確定在調用previous_question
之前先調用它,它可以工作,但是看起來很荒謬。 有沒有更好的方法來處理Rails中的nil錯誤?
我不能說這是正確的方法,但這是處理這種情況的另一種方法:
def previous_question
self.chapter.previous.try(:question)
end
這樣就不會有任何錯誤,如果沒有上一章,該方法將簡單地返回nil 。
如果您想返回其他內容以防萬一,則可以編寫以下代碼:
def previous_question
self.chapter.previous.try(:question) || returning_this_value_instead
end
旁注:在這種情況下,您無需使用self:
def previous_question
chapter.previous.try(:question) || returning_this_value_instead
end
我最喜歡的視圖渲染方法之一:
有趣的方法是使用nil對象 ,盡管它們並不適合所有情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.