![](/img/trans.png)
[英]How to catch “error”:“undefined method `[]' for nil:NilClass”
[英]How to disable the “undefined method for nil:NilClass” error?
我的控制器和視圖中有一堆類似current_user.articles
或current_user.name
的代碼。 顯然,當沒有當前用戶時,這會導致錯誤。 我可以一直寫類似current_user && current_user.articles
的東西,但這是重復的。
如果在 current_user 上調用方法,但 current_user 不存在,是否有某種方法可以禁用此錯誤消息並僅返回警告?
與其禁用錯誤(這似乎不是一個特別棒的主意),不如考慮使用 ruby 安全導航運算符, &.
或.try
。
請注意,有些人( 這里是一個示例)將此視為代碼異味。 但是,IMO 比禁用NoMethodError
更臭。
您可以在訪問任何 object 方法或屬性之前使用&
來避免錯誤。 這樣,如果 object 為 nil,則&
之后的所有鏈都將被避免,結果將為 nil。
current_user&.name # User name if current_user exists, nil otherwise
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.