前提・実現したいこと
ActiveStorageを使って画像をテーブルに保存し、
ブラウザで画像を表示させたいのですが、
パソコン上のデータにアクセス出来、ActiveStorageテーブルにデータが保存されるが、
itemテーブルのimageには保存出来なくて困っています。
教えていただけると助かります。
発生している問題・エラーメッセージ
app/views/items/_item.html.erb:1でエラーが発生している。
解読出来なかった内容
・ターミナルの最後のメッセージ
ActiveStorage::Attachment Load (0.4ms) SELECT active_storage_attachments
.* FROM active_storage_attachments
WHERE active_storage_attachments
.record_id
= 8 AND active_storage_attachments
.record_type
= 'Item' AND active_storage_attachments
.name
= 'image' LIMIT 1
↳ app/views/items/_item.html.erb:1
Rendered items/_item.html.erb (Duration: 3.4ms | Allocations: 1361)
Rendered items/index.html.erb within layouts/application (Duration: 54.2ms | Allocations: 17299)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 72ms (Views: 53.7ms | ActiveRecord: 12.8ms | Allocations: 25897)
エラーメッセージ
該当のソースコード
Ruby on rails app/views/items/_item.html.erb <div class="content_post" style="background-image: url(<%= image_tag item.image ,class: 'item-image' if item.image.attached? %>);"> <%# 参考にしたコード<%= image_tag message.image, class: 'message-image' if message.image.attached? %> %> <%# attached?メソッド レコードにファイルが添付されているかどうか モデル.ファイル名.attached? %> <%# image_tagメソッド img要素を生成するRailsのヘルパーメソッド %> <%# image_tagメソッドでは、複雑なRailsのディレクトリパスを指定しなくても、モデルから画像ファイルを呼び出して引数に記述するだけで、画像を表示するimg要素を生成 %>
試したこと
<div class="content_post" style="background-image: url(<%= item.image %>);"> 上記から↓に変更 <div class="content_post" style="background-image: url(<%= image_tag item.image ,class: 'item-image' if item.image.attached? %>);">app/models/item.rbに
下記を実装
class Item < ApplicationRecord
validates :text, presence: true
belongs_to :user
has_one_attached :image(ここでimageに保存できると思いました。)
#画像ファイルをitemテーブルのレコードに添付
#itemテーブルにカラムを追加する必要なし
違うと思いながら、items/show.html.erbに
imageが保存できるように_item.html.erbと同じものを実装
補足情報(FW/ツールのバージョンなど)
Gemに導入
gem 'mini_magick'
gem 'image_processing', '~> 1.2'
mini_magickとはImageMagickの機能をRubyで扱えるようにしてくれる
ImageProcessing、MiniMagickでは提供できない、画像サイズを調整する機能を提供する
画像加工のために必要なImageMagick
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/02 01:14