有时结果中的项目价格未定义,所以我运行以下代码:
price = result.search('span.result-price')[0].text
我得到了:nil:NilClass的未定义方法'text'
无论如何,有没有避免这种异常的方法,例如在未定义时指定价格= $ 0000。 谢谢。
答案 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