2016-05-30 21 views
9

Ho appena aggiornato a Rails 5 e ho un problema strano durante l'utilizzo CarrierWave.Rails 5, "nil non è una fonte di risorsa valida" usando Carrierwave

Ho il codice esatto che avevo per Rails 4:

<%= image_tag article.image_url(:thumb) %> 

Ma dopo l'aggiornamento ottengo:

nil is not a valid asset source 

Prima di aggiornare a Rails 5, non ho avuto alcun problema simile.

Nel mio modello Article ho:

mount_uploader :image, ImageUploader 

quello che potrebbe essere colpa qui? Può essere qualcos'altro e non un problema di aggiornamento di Rails?

+1

Sembra che tu semplicemente non hanno un'immagine in questo disco. Potresti confermarlo? –

risposta

8

Il problema era che stavo cercando di mostrare un'immagine che non esisteva.

calcolata unless article.image.blank? risolto.

EDIT: In Rails 4, questo avrebbe reso proprio niente senza errori, mentre in Rails 5 esso genera un errore.

Grande grazie a @BookOfGreg per averlo indicato.

+5

Per quelli che ottengono qui senza carrierwave: In rotaie 4, questo avrebbe reso fuori un tag img vuoto, in rotaie 5 alzerà il nullo, quindi non c'è una piccola differenza. – BookOfGreg

+1

In solidarietà. . –

+1

Ibid. Inoltre, le immagini predefinite non presenti solleveranno questo errore in Rails 5 e può richiedere un bel po 'di ricerca per trovare la causa. –

7

Non so questa è la soluzione compatta o no, ma questo codice funzionerà.

attivare il metodo di ripiego nel vostro uploader.

def default_url 
    "/assets/fallback/" + [version_name, "default.png"].compact.join('_') 
    end 

Spero che questo ti possa aiutare.

Cheers (y)

+0

L'ho già risolto, ma ho dimenticato di aggiornare questo post. Grazie lo stesso. –

+1

yaaahhh funziona ...... Grazie @simran Sir :) –

0

Provare con questo, è necessario aggiungere a meno che condizione nel codice. È necessario aggiungere il codice qui sotto

<% = image_tag article.image_url (: pollice) a meno che article.image.blank? %>