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?
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.
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)
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? %>
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.