Railsでユーザー画像登録(デフォルト画像設定も含む)


ImageMagick(画像変換ツール)のインストール

ターミナル

$ brew install imagemagick


ImageMagickをRailsから使うためのgem、mini_magickをインストール

gemfile

gem 'mini_magick'

ターミナル

$ bundle install


Active Storageのインストール

ターミナル

$ rails active_storage:install
$ rails db:migrate

assets/images/に default_user.png 追加

Model、Controller、Viewの設定

Model(user.rb):

  has_one_attached :image

Controller(users_controller.rb):

def update
   current_user.update(update_params)
 end

〜〜

 private
 def update_params
   params.require(:user).permit(:image)
 end

View(show.html.erb):

<h2>プロフィール画像</h2>
<% if @user.image.attached? %>
# 画像が登録されている場合の処理
 <p><%= image_tag(rails_blob_path(@user.image),:size => "50x50") %></p>
<% else %>
# 画像が登録されていない場合の処理
 <p><%= image_tag("default_user.png", :size => "50x50") %></p>
<% end %>

View(edit.html.erb):

<h2>プロフィール画像</h2>
<div class="form-group file">
    <%= f.file_field :image, placeholder: "画像アップロード" %>
    <%= f.submit "送信" %> 
</div>

この記事が気に入ったらサポートをしてみませんか?