ホーム > カテゴリ > Ruby・Ruby on Rails >

Active Storageを使用して添付ファイル(アップロード)を簡単に管理する [複数ファイル対応版]

アップロードする添付ファイルが1ファイルは前回の記事を参照。

実行例

複数のファイルをアップロードする。例では5ファイル。

1. 初期設定

前回の記事を参照した方は飛ばしてください。

// プロジェクトの生成
rails new . --skip-turbolinks --skip-action-mailer --skip-action-mailbox  --skip-test -d mysql

// データベースの設定
config/database.yml

// Active Storageのインストール
bin/rails active_storage:install

// scaffold(スキャフォールド)
bin/rails g scaffold Cat name:string description:text

// マイグレーションの実行(テーブルの生成)
bin/rails db:migrate

2. モデル

[app/models/cat.rb]

class Cat < ApplicationRecord
  has_many_attached  :attachments
end

:attachmentsの名称は任意。

3. ビュー

[app/views/cats/_form.html.erb]

// 以下を追加する
<div class="field">
  <%= form.label "添付ファイル(複数ファイル可)" %>
  <%= form.file_field :attachments, multiple: true %>
</div>

[app/views/cats/show.html.erb]

// 以下を追加する
<p>
  <strong>添付ファイル:</strong>
  <% if @cat.attachments.attached? %>
    <% @cat.attachments.each do |obj| %>
      <% url = rails_blob_path(obj) %>
      <br>      
      <%= link_to URI.unescape(File.basename(url)),url %>
    <% end %>
  <% end %>
</p>

4. コントローラー

[cats_controller.rb]

// 以下のように「attachments:」を追加する
def cat_params
  params.require(:cat).permit(:name, :description, attachments: [])
end

プロジェクトの実行

http://localhost:3000/cats

アップロードされたファイルの場所は「プロジェクト名/storage」です。

参考URL

Active Storage の概要






関連記事



公開日:2019年12月15日 最終更新日:2020年03月04日
記事NO:02812