Ruby on Rails6.0 carrierwaveを使用した複数画像投稿の表示ができない
Q&A
Closed
解決したいこと
上記記事を参考にさせて頂きながらcarrierwaveを使用した複数画像投稿機能を実装しようとしております。
念のため、以下に自分のコードも記載させて頂きます。
# uploaders/image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
if Rails.env.development?
storage :file
elsif Rails.env.test?
storage :file
else
storage :fog
end
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# 受け付ける画像の種類
def extension_whitelist
%w(png jpg jpeg)
end
end
# migration topicsテーブル
class CreateTopics < ActiveRecord::Migration[6.0]
def change
create_table :topics do |t|
t.string :title, null: false
t.text :text, null: false
t.integer :category, null: false
t.json :images
t.references :user, null: false, foreign_key: true
t.timestamps
end
end
end
# models/topic.rb
class Topic < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to_active_hash :category
mount_uploaders :images, ImageUploader
belongs_to :user
with_options presence: true do
validates :title, length: { maximum: 20 }
validates :text, length: { maximum: 1000 }
validates :category_id, numericality: { other_than: 1 }
end
end
# config/initializers/carrierwave.rb
unless Rails.env.development? || Rails.env.test?
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
region: 'ap-northeast-1'
}
config.fog_directory = '**********'
config.cache_storage = :fog
end
end
発生している問題・エラー
このように、画像がうまく表示できなくて困っております。。。
該当すると思われるコード
<%# topics/show.html.erb %>
<div class="show-main">
<div class="show-topic">
<h3>タイトル</h3>
<%= @topic.title %>
<h3>内容</h3>
<%= @topic.text %>
<h3>投稿画像</h3>
<% @topic.images.each do |image| %>
<%= image_tag image.url %>
<% end %>
</div>
</div>
# topics.controller.rb
class TopicsController < ApplicationController
def index
@topics = Topic.all.order('created_at DESC')
end
def new
@topic = Topic.new
end
def create
@topic = Topic.new(topic_params)
if @topic.save
redirect_to root_path
else
render :new
end
end
def show
@topic = Topic.find(params[:id])
end
private
def topic_params
params.require(:topic).permit(:title, :text, :category_id, :user_id,{images: []},:anonymous).merge(user_id: current_user.id)
end
end
自分で試したこと
様々な記事を確認しましたが、表示の記法としては同様の記述だと思うのですが、問題が分かりません。。。
DBにはしっかり保存されている様子ですが、やはり取り出し方に問題があるのでしょうか??
初歩的な質問ですが、御助言頂けますと幸いです。
0