红宝石,nil:NilClass的未定义方法`text'

时间:2018-08-23 17:50:59

标签: ruby

有时结果中的项目价格未定义,所以我运行以下代码:

price =  result.search('span.result-price')[0].text

我得到了:nil:NilClass的未定义方法'text'

无论如何,有没有避免这种异常的方法,例如在未定义时指定价格= $ 0000。 谢谢。

2 个答案:

答案 0 :(得分:3)

您有几种选择

price_element = result.search('span.result-price')[0]
price = price_element ? price_element.text : '$0000'

price = (result.search('span.result-price')[0].text rescue '$0000')

从Ruby 2.3.0开始,您可以利用安全的导航操作符

price = result.search('span.result-price')[0]&.text || '$0000'

答案 1 :(得分:1)

出现此错误的原因是price = result.search('span.result-price')返回一个空数组。

然后,您尝试使用索引0寻址不存在的数组元素,并因此返回nil

为避免异常,可以使用以下命令:

price =  result.search('span.result-price')[0].try(:text)

如果存在result.search('span.result-price')[0],它将返回文本;如果不存在,它将返回nil