2013-05-21 13 views
10

Ho la seguente riga nel mio Rails app:Come risolvere il metodo non definito `split 'per nil: errore NilClass?

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

Quando @ product.secondary_images ha un contenuto in esso, questo funziona bene. Tuttavia, quando non v'è alcun contenuto, ottengo questo errore:

undefined method `split' for nil:NilClass 

Come posso assegnare un altro valore al @images se non ci sono contenuti in esso?

risposta

15

Una possibile soluzione potrebbe essere quella di utilizzare try che fa tornare a zero nel caso in cui il metodo non può essere inviato a secondary_images. E poi usa l'operatore OR per assegnare qualcos'altro.

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

È possibile utilizzare il metodo try

nil.try(:split, ",") 
0

risposta generale soggettivo, ma probabilmente sarei gestire in questo modo io stesso, se volevo tutto in una sola riga:

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