wake-up-neo.com

Rails 5, "Null ist keine gültige Bestandsquelle"

Ich habe gerade ein Upgrade auf Rails 5 durchgeführt und habe ein seltsames Problem, wenn ich versuche, ein Bild zu zeigen.

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

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

Nach dem Upgrade bekomme ich:

nil is not a valid asset source

Vor dem Upgrade auf Rails 5, hatte ich kein ähnliches Problem .

In meinem Modell Article habe ich:

mount_uploader :image, ImageUploader

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

15
Tasos Anesiadis

Das Problem war, dass ich versuchte, ein Bild zu zeigen, das nicht existierte .

Das Hinzufügen von unless article.image.blank? hat es gelöst:

<%= image_tag article.image_url(:thumb) unless article.image.blank? %>

EDIT: In Rails 4 hätte dies nichts ohne Fehler gerendert, während in Rails 5 ein Fehler auftritt. Es war also tatsächlich ein Upgrade-Problem.

Vielen Dank an @BookOfGreg für diesen Hinweis.

19
Tasos Anesiadis

Ich weiß nicht, ob das eine kompakte Lösung ist 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 dir helfen.

Prost (y)

9
Simranjit Singh

Versuchen Sie es damit, Sie müssen außer Bedingung in Ihrem Code hinzufügen. Sie müssen den folgenden Code hinzufügen 

<% = image_tag article.image_url (: thumb), außer article.image.blank? %> 

0
Rahul2692

Ich hoffe, dass dieses Snippet zukünftigen Lesern helfen wird.

<td><%= image_tag image.picture.url, size: "100x100" unless image.picture.url.blank? %></td>

ohne diesen Code [außer image.picture.url.blank?] wird "nil ist keine gültige Bestandsquelle" beim Hochladen eines leeren Bildes angezeigt.

0
toking