web-dev-qa-db-fra.com

Rails 5, "nil n'est pas une source d'actif valide"

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?

15
Tasos Anesiadis

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é.

19
Tasos Anesiadis

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

9
Simranjit Singh

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

0
Rahul2692

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.

0
toking