2016-05-30 6 views
9

Ich habe gerade auf Rails 5 aktualisiert und ich habe ein seltsames Problem bei der Verwendung von CarrierWave.Rails 5, "nil ist keine gültige Asset-Quelle" mit Carrierwave

ich den genauen Code habe ich für Rails 4 hatte:

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

ich aber nach dem Upgrade:

nil is not a valid asset source 

Vor 5 Rails Upgrade Ich hatte kein ähnliches Problem.

In meinem Article Modell ich habe:

mount_uploader :image, ImageUploader 

Was hier schuld sein könnte? Kann es etwas anderes sein und kein Rails-Upgrade-Problem?

+1

Es sieht so aus, als hätten Sie kein Bild in diesem Datensatz. Kannst du es bestätigen? –

Antwort

8

Das Problem war, dass ich ein Bild zu zeigen versuchte, dass nicht noch nicht gab.

Hinzufügen unless article.image.blank? löste es.

EDIT: In Rails 4, würde dies nur gemacht nichts ohne Fehler haben, während in Rails 5 es einen Fehler auslöst.

Vielen Dank an @BookOfGreg für das Aufzeigen.

+5

Für diejenigen, die hier ohne carrierwave kommen: In Gleisen 4 hätte dies ein leeres img-Tag gerendert, in Gleisen 5 wird es auf Null steigen, also ist es ein kleiner Unterschied. – BookOfGreg

+1

In Solidarität. . –

+1

Ebd. Auch Standardbilder, die nicht vorhanden sind, werden diesen Fehler in Rails 5 verursachen und es kann ein gutes Stück Jagd dauern, um die Ursache zu finden. –

7

Ich weiß nicht, das ist kompakte Lösung oder nicht, aber dieser Code wird funktionieren.

Aktivieren Sie die Fallback-Methode in Ihrem Uploader.

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

Hoffe, das wird Ihnen helfen.

Prost (y)

+0

Ich habe es bereits gelöst, aber ich habe vergessen, diesen Beitrag zu aktualisieren. Trotzdem danke. –

+1

yaaahhh es funktioniert ...... Danke @simran Sir :) –

0

Versuchen Sie damit, müssen Sie hinzufügen, es sei denn Bedingung in Ihrem Code. Sie müssen den folgenden Code hinzufügen:

<% = image_tag article.image_url (: thumb) es sei denn article.image.blank? %>

Verwandte Themen