我的Rails应用程序中有以下行:
@images = @product.secondary_images.split(",")
当@ product.secondary_images包含内容时,运行正常。但是,当没有内容时,我收到此错误:
undefined method `split' for nil:NilClass
如果没有内容,如何为@images分配另一个值?
答案 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(",")