14

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

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

当@product.secondary_images 中有内容时,它运行良好。但是,当没有内容时,我收到此错误:

undefined method `split' for nil:NilClass

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

4

5 回答 5

23

一个可能的解决方案是使用trywhich 确实返回 nil 以防您的方法无法发送到secondary_images. 然后使用 OR 运算符分配其他内容。

@images = @product.secondary_images.try(:split, ",") || 'some other value'  
于 2013-05-21T20:03:51.053 回答
5

或者使用安全导航运算符 (&.)

nil&.split(",")
于 2017-03-22T14:22:54.960 回答
0

你可以使用try方法

nil.try(:split, ",")
于 2013-05-21T20:03:29.043 回答
0

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

@images = @product.secondary_images.nil? ? 'another value' : @product.secondary_images.split(',')
于 2013-05-21T20:12:39.477 回答
0

我发现这比尝试更容易。

nil.to_s.split(",")
于 2021-06-03T14:22:17.170 回答