Active Storageとは?

Active Storageは、Rails5.2で追加された、ファイルアップロードを行うための機能です。

Rails5.2からはrailsの標準で入っているgemです。

Active Storageを使えば、フォームで画像の投稿機能などが簡単に作れます。

また、Amazon S3, GoogleCloud Storage, MicrosoftAzure Storageなどの

クラウドストレージサービスを使ってファイルのアップロードを簡単に行うこともできます。

# マイグレーションファイルを作成
% rails active_storage:install

# マイグレーションファイルを実行
% rails db:migrate

Active Storageを使って、複数画像ファイルをアップロードする

site.rb

class Site < ApplicationRecord
  # Active Storage の「1対1」の画像アップロード
  has_one_attached :og_image
  has_one_attached :favicon

  # Active Storage の「1対多」の画像アップロード
  has_many_attached :main_images
end

複数枚の画像をアップロードしたいモデルにhas_many_attachedを追加します。

site_controller.rb

private

  def site_params
    params.require(:site).permit(:name, :subtitle, :description, :favicon, :og_image, main_images: [])#最後追加
  end

main_images: []これで配列を渡しています。

admin/sites/edit.html.slim

         #入力フォーム部分(gem 'simple_form'使用)
      = f.input :main_images, as: :file, input_html: { multiple: true }
    #画像表示部分
      - if @site.main_images.attached?
      .main_images_box
        - @site.main_images.each do |main_image|
          .main_image
           = image_tag main_image.variant(resize:'300x100').processed

gem 'simple_form'を使っているときは、複数枚選択を設定するとき、

input_html: { multiple: true }を使います。