nil的未定义方法`first':NilClass

时间:2012-12-14 05:30:15

标签: ruby-on-rails ruby rescue

有时我会收到此错误,我只是希望Rails在发生错误时挽救/跳过错误,而不是完全停止程序。有没有办法做到这一点?

以下是我的代码:

<% wiki = MediaWiki.new(:domain => 'commons.wikimedia.org') %>
<% wikimedia_user = wiki.find("File:Samuel_L_Jackson_as_Nick_Fury.jpg") %>

第二行导致此错误:

NoMethodError (undefined method `first' for nil:NilClass)

如果发生这种情况,我只想将wikimedia_user设置为nil。我尝试将.inspect?添加到.find的末尾,但我得到的只是错误。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

在与要抑制异常并返回nil的行相同的行上,将rescue nil添加到结尾。

<% wikimedia_user = wiki.find("File:Samuel_L_Jackson_as_Nick_Fury.jpg") rescue nil %>

注意:这通常不被认为是一种好的做法,因为从该线路抛出的任何类型的异常都将被该救援捕获。在你的情况下,它可能不是一个大问题,但要记住要继续前进。