Je viens de passer à Rails 5 et j'ai un problème étrange en essayant de montrer une image.
J'ai le code exact que j'avais pour Rails 4:
<%= image_tag article.image_url(:thumb) %>
Mais après la mise à niveau, je reçois:
nil is not a valid asset source
Avant de passer à Rails 5, je n’avais aucun problème similaire .
Dans mon modèle Article
, j'ai:
mount_uploader :image, ImageUploader
Quel pourrait être la faute ici? Peut-il s'agir d'autre chose et non d'un problème de mise à niveau Rails?
Le problème était que j'essayais de montrer une image qui n'existait pas .
L'ajout de unless article.image.blank?
l'a résolu:
<%= image_tag article.image_url(:thumb) unless article.image.blank? %>
EDIT: Dans Rails 4 , cela n’aurait rien rendu sans erreurs, alors que dans Rails 5 cela déclenche une erreur. Donc, c'était en fait un problème de mise à niveau.
Un grand merci à @BookOfGreg pour l'avoir signalé.
Je ne sais pas si c'est une solution compacte ou non mais ce code fonctionnera.
activer la méthode de secours dans votre téléchargeur.
def default_url
"/assets/fallback/" + [version_name, "default.png"].compact.join('_')
end
J'espère que ceci vous aidera.
À la vôtre
Essayez avec cela, vous devez ajouter à moins que condition dans votre code. Vous devez ajouter le code ci-dessous
<% = image_tag article.image_url (: thumb) sauf si article.image.blank? %>
J'espère que cet extrait aidera les futurs lecteurs.
<td><%= image_tag image.picture.url, size: "100x100" unless image.picture.url.blank? %></td>
sans ce code [sauf si image.picture.url.blank?], "nil n'est pas une source d'actif valide" s'affiche lors du téléchargement d'une image vide.