如何修复未定义的方法`split'为nil:NilClass错误?

时间:2013-05-21 20:01:12

标签: ruby-on-rails ruby

我的Rails应用程序中有以下行:

@images = @product.secondary_images.split(",")

当@ product.secondary_images包含内容时,运行正常。但是,当没有内容时,我收到此错误:

undefined method `split' for nil:NilClass

如果没有内容,如何为@images分配另一个值?

5 个答案:

答案 0 :(得分:18)

一种可能的解决方案是使用try,如果您的方法无法发送到secondary_images,则会返回nil。然后使用OR运算符分配其他内容。

@images = @product.secondary_images.try(:split, ",") || 'some other value'  

答案 1 :(得分:2)

或使用safe navigation operator (&.)

nil&.split(",")

答案 2 :(得分:0)

您可以使用try方法

nil.try(:split, ",")

答案 3 :(得分:0)

一般都是主观回答,但如果我想把它全部放在一行,我可能会自己这样处理:

@images = @product.secondary_images.nil? ? 'another value' : @product.secondary_images.split(',')

答案 4 :(得分:0)

我觉得这比尝试容易。

nil.to_s.split(",")