Rails 5にアップグレードしました。画像を表示しようとすると奇妙な問題が発生します。
私はRails 4のために持っていた正確なコードを持っています:
<%= image_tag article.image_url(:thumb) %>
しかし、アップグレード後、次のようになります。
nil is not a valid asset source
Rails 5にアップグレードする前に同様の問題はありませんでした。
ここで何が悪いのでしょうか? Railsアップグレードの問題ではない)
問題は存在しなかったの画像を表示しようとしたことでした。
unless article.image.blank?
を追加すると解決します:
<%= image_tag article.image_url(:thumb) unless article.image.blank? %>
編集:Rails 4では、これはエラーなしでは何もレンダリングしませんでしたが、Rails 5ではエラーが発生します。つまり、実際にはアップグレードの問題でした。
これを指摘してくれた@BookOfGregに感謝します。
これがコンパクトなソリューションかどうかはわかりませんが、このコードは機能します。
アップローダーでフォールバックメソッドをアクティブにします。
def default_url
"/assets/fallback/" + [version_name, "default.png"].compact.join('_')
end
これがお役に立てば幸いです。
乾杯(y)
これで試してみてください、あなたはコードにnless条件を追加する必要があります。以下のコードを追加する必要があります
<%= image_tag article.image_url(:thumb)article.image.blank? %>
このスニペットが将来の読者の役に立つことを願っています。
<td><%= image_tag image.picture.url, size: "100x100" unless image.picture.url.blank? %></td>
[image.picture.url.blank?]コードがない場合、空の画像をアップロードすると、「nilは有効なアセットソースではありません」と表示されます。