web-dev-qa-db-ja.com

Rails 5、 "nilは有効なアセットソースではありません"

Rails 5にアップグレードしました。画像を表示しようとすると奇妙な問題が発生します。

私はRails 4のために持っていた正確なコードを持っています:

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

しかし、アップグレード後、次のようになります。

nil is not a valid asset source

Rails 5にアップグレードする前に同様の問題はありませんでした

ここで何が悪いのでしょうか? Railsアップグレードの問題ではない)

21
Tasos Anesiadis

問題は存在しなかったの画像を表示しようとしたことでした。

unless article.image.blank?を追加すると解決します:

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

編集:Rails 4では、これはエラーなしでは何もレンダリングしませんでしたが、Rails 5ではエラーが発生します。つまり、実際にはアップグレードの問題でした。

これを指摘してくれた@BookOfGregに感謝します。

22
Tasos Anesiadis

これがコンパクトなソリューションかどうかはわかりませんが、このコードは機能します。

アップローダーでフォールバックメソッドをアクティブにします。

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

これがお役に立てば幸いです。

乾杯(y)

9
Simranjit Singh

これで試してみてください、あなたはコードにnless条件を追加する必要があります。以下のコードを追加する必要があります

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

0
Rahul2692

このスニペットが将来の読者の役に立つことを願っています。

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

[image.picture.url.blank?]コードがない場合、空の画像をアップロードすると、「nilは有効なアセットソースではありません」と表示されます。

0
toking