ActiveStorage Sample Code
Active Storage の概要 | Rails ガイド
- ActiveStorageでアップロードされたファイルのうちブラウザで表示できる画像のみサムネイル表示させる - Qiita
- ActiveStorageを利用してファイルをアップロードする際に「undefined method `upload' for nil:NilClass」エラーが発生する - Qiita
$ rails active_storage:install
$ rails g scaffold user name:string
$ rails db:migrate
# app/models/user.rb
class User < ApplicationRecord
has_one_attached :avatar
end
# app/controllers/users_controller.rb
def user_params
params.require(:user).permit(:name, :avatar)
end
# app/views/users/_form.html.erb
<div class="field">
<%= form.label :avatar %>
<%= form.file_field :avatar, accept: '.jpeg, .jpg, .gif, .png, .bmp' %>
</div>
# app/views/users/show.html.erb
<%# ファイルが添付されてるか? %>
<% if @user.avatar.attached? %>
<p>
<strong>Avatar:</strong>
<%# ファイル名を表示 %>
<%= @user.avatar.filename %>
<%# ファイルがの拡張子がjpeg,jpg,gif,png,bmpか? %>
<% if @user.avatar.filename.to_s =~ /\.jpeg$|\.jpg$|\.gif$|\.png$|\.bmp$/ %>
<p>
<%# 画像ファイルを表示 %>
<%= image_tag @user.avatar, height: '100' %>
</p>
<% end %>
</p>
<% end %>