2013-05-21 17 views
10

Mam następującą linię w moim app Rails:Jak naprawić niezdefiniowaną metodę "split" dla zer: Błąd NilClass?

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

Kiedy @ product.secondary_images zawiera treści w nim, to działa dobrze. Jednak gdy nie ma żadnych treści, pojawia się następujący błąd:

undefined method `split' for nil:NilClass 

Jak mogę przypisać inną wartość do @obrazów, jeśli nie ma w niej zawartości?

Odpowiedz

15

Możliwym rozwiązaniem byłoby wykorzystanie try który nie zwraca zero w przypadku, gdy metoda nie może być wysłany do secondary_images. A następnie użyj operatora OR, aby przypisać coś innego.

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

Ogólnie prywatną odpowiedź, ale pewnie bym sobie to w ten sposób siebie, gdybym chciał to wszystko w jednym wierszu:

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