我的 Rails 应用程序中有以下行:
@images = @product.secondary_images.split(",")
当@product.secondary_images 中有内容时,它运行良好。但是,当没有内容时,我收到此错误:
undefined method `split' for nil:NilClass
如果@images 中没有内容,如何为它分配另一个值?
我的 Rails 应用程序中有以下行:
@images = @product.secondary_images.split(",")
当@product.secondary_images 中有内容时,它运行良好。但是,当没有内容时,我收到此错误:
undefined method `split' for nil:NilClass
如果@images 中没有内容,如何为它分配另一个值?
一个可能的解决方案是使用try
which 确实返回 nil 以防您的方法无法发送到secondary_images
. 然后使用 OR 运算符分配其他内容。
@images = @product.secondary_images.try(:split, ",") || 'some other value'
或者使用安全导航运算符 (&.):
nil&.split(",")
你可以使用try
方法
nil.try(:split, ",")
一般是主观的答案,但如果我想把它全部放在一行中,我可能会自己这样处理:
@images = @product.secondary_images.nil? ? 'another value' : @product.secondary_images.split(',')
我发现这比尝试更容易。
nil.to_s.split(",")