前提・実現したいこと
現在Railsチュートリアル6をしています。
第13章の4-1の基本的な画像アップロードのActive Storageを使用して、画像を表示するところでうまくいきませんでした。
RailsガイドのActiveStorageの概要や、自分なりに調べても解決できなかったため質問させていただきます。
助けていただければ幸いです。
発生している問題・エラーメッセージ
該当のソースコード
<%= image_tag micropost.image if micropost.image.attached? %>
試したこと
1.micropost.imageに値が入っているか
[1] pry(#<#<Class:0x00007fef26d99370>>)> micropost.image => #<ActiveStorage::Attached::One:0x00007fef29c9ed50 @name="image", @record= #<Micropost:0x00007fef25b32948 id: 303, content: "hello", user_id: 1, created_at: Sat, 13 Feb 2021 10:14:12 UTC +00:00, updated_at: Sat, 13 Feb 2021 10:14:12 UTC +00:00>>
2.micropost.image.attached?で論理値が返ってくるか
[2] pry(#<#<Class:0x00007fef26d99370>>)> micropost.image.attached? ActiveStorage::Attachment Load (0.8ms) SELECT "active_storage_attachments".* FROM "active_storage_attachments" WHERE "active_storage_attachments"."record_id" = ? AND "active_storage_attachments"."record_type" = ? AND "active_storage_attachments"."name" = ? LIMIT ? [["record_id", 303], ["record_type", "Micropost"], ["name", "image"], ["LIMIT", 1]] ↳ (pry):2 => true
また、似たようなエラーが出た方が行っていた対策は、元々記載できていました。
補足1
1.2とも問題がなかったため、<%= image_tag micropost.image %>だけで表示できるか試してみましたが、同じエラー発生しました。
Can't resolve image into URL: undefined method `attachment_url' fo・・・
そのため、image_tag micropost.imageのところで問題が発生していると思います。
補足2
別のページではimage_tagを使って画像を表示できています。
# ユーザーのGravar画像を返す def gravatar_for(user, size: 80) gravatar_id = Digest::MD5::hexdigest(user.email.downcase) gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}" image_tag(gravatar_url, alt: user.name, class: "gravatar") end
あなたの回答
tips
プレビュー