これまでに作った機能について簡単にまとめていく。

今回は、

carrierwaveを使った複数の画像アップロード

使用モデル

Blogモデル

  カラム データ型
1 title string
2 content text
3 images json

補足
画像を配列で受け取るためデータ型をjsonにする

ImageMagickのインストール

既にある場合は省略

$ brew install imagemagick

インストールされているか確認したい場合は、以下のコマンドで確認

$ convert -version

Gemの導入

gem 'carrierwave'
gem 'mini_magick'

bundle installの実行

carrierwaveはアップロード用
mini_magickはサイズ調整用

アップローダーの作成

$ rails g uploader Image

Imageは、今回のアップローダー名

アップローダーをモデルに紐付け

app/models/blog.rb

class Blog < ApplicationRecord
  mount_uploaders :image, ImageUploader
end

注意

画像を一枚ずつアップロードする場合はmount_uploader
だがそのままではエラーが出るので必ずmount_uploadersにする

フォームを追加

<%= f.label :images %>
<%= f.file_field :images, multiple: true %>

ストロングパラメータの設定

def blog_params
  params.require(:blog).permit(:title, :content, {images: []})
end

画像を表示する場合

<% @blog.images.each do |blog| %>
   <%= image_tag (blog.url) %>
<% end %>

以上で作成完了