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]
// 必要な箇所のみ記述
def create
@cat = Cat.new(cat_params)
@cat.attachments = params[:cat][:attachments]
if @cat.save
redirect_to @cat, notice: '登録しました。'
else
render :new
end
end
def update
@cat = Cat.where(id: params[:id])
@cat[0].name = params[:cat][:name]
@cat[0].description = params[:cat][:description]
@cat[0].attachments = params[:cat][:attachments]
@cat = @cat[0]
if(!@cat.valid?)
render :edit
return
end
if @cat.save
redirect_to @cat, notice: '更新しました。'
else
render :edit
end
end
def cat_params
params.require(:cat).permit(:name, :description, attachments: [])
end
プロジェクトの実行
アップロードされたファイルの場所は「プロジェクト名/storage」です。
参考URL
スポンサーリンク
関連記事
| 前の記事: | Active Storageを使用して添付ファイル(アップロード)を簡単に管理する |
| 次の記事: | Active StorageのダウンロードURLを変更する[/rails/active_storage/blobs] |
公開日:2019年12月15日 最終更新日:2020年08月01日
記事NO:02812
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









