![](/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.