LoginSignup
4
5

More than 3 years have passed since last update.

ActiveStorageを用いて、画像を複数枚アップロードする方法

Last updated at Posted at 2019-06-10

ActiveStorageを用いて、画像を複数枚アップロードする

ActiveStorageは、Rails 5.2以降のみ利用可能。
Rails 5.2以降であれば、標準装備されております。
また、画像アップロード機能を実装する上でActiveStorageを利用される際は、画像を保存するためのカラムやテーブルをご自身で用意する必要はありません。
下記手順の中で自動生成されます。

本記事の対象

表題の通り、ActiveStorageを用いて、画像を複数枚アップロードする際の方法を手順を中心に説明しております。

手順

  1. まずは、ターミナルにてActiveStorageをインストールするコマンドを入力。そして、マイグレート。

    $ rails active_storage:install
    
    $ rails db:migrate
                             //このマイグレーションによって、以下のテーブルが自動生成される。
                                   * active_storage_blobs
                                   * active_storage_attachments
    
  2. 該当するモデル(今回はItemモデルとする)に has_many_attached :images と記述する。
      この :imagesというのはファイル名です。こちらは好きな様に命名することができます。

    (models/Item.rb)
    
        class Item < ApplicationRecord
            has_many_attached :images
        end
    
  3. 次にコントローラーの編集を行う。

     (controllers/items_controller.rb)
    
          def create
              @item = Item.create.params.require(:item).permit(:name, images: [])
          end
    
                   //今回は画像を複数枚取り扱うため、「 images: [] 」と配列型で記述する必要があります。
    
  4. フォームのtext_field内に手順2で記載したファイル名を記述する。

      <%= form_with model: @item, local: true  do |f| %>
         <%= f.file_field :images, multiple: true %>
         <%= f.submit %>
      <% end %>
    
                           //multipleとは、複数の値を取得できる様にするオプションです。
    

以上が、ActiveStorageを用いて、画像を複数枚アップロードする手順となります。
フォームで送信されたファイルは、コントローラーのcreateアクションを介して、今回自動生成された2つのテーブルに保存されます。

参考

https://qiita.com/hmmrjn/items/7cc5e5348755c517458a
https://qiita.com/narikei/items/d20e64ce3ae5b45bfa2d

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5