見出し画像

Rails-CarrierWaveの画像アップロード機能を設置

Userページを実装済み前提の内容です!まだの方はこちら ↓

画像アップロード機能


例: イメージ画像アップロード

Gemfile

gem 'carrierwave'

ターミナル

$ bundle install

ターミナル

# app/uploaders/avatar_uploader.rb //ファイルが作成されます
$ rails generate uploader Avatar

ターミナル

#カラムを追加
rails g migration add_avatar_to_users avatar:string
rails db:migrate

app / models / user.rb

mount_uploader :avatar, AvatarUploader #追加

app / controllers / users_controller.rb

class UsersController < ApplicationController
  def user_params
      params.require(:user).permit(:username, :email, :profile, :avatar) #追加
  end
end

app / views / users / edit.html.erb

<div class="field">
     <%= f.label :avatar, "Images:", class: "label" %>
     <%= f.file_field :avatar %>
</div>

円形のプロフィール画像を実装


例:イメージ画像

app / views / users / edit.html.erb

<% if @user.avatar? %>
#アップロードされた画像を表示
   <%= image_tag @user.avatar.url, size: '50x50', class: "rounded-circle " %>
<% else %>
#まだ画像がアップロードされてないデフォルト画像を表示
   <%= image_tag "no-image.png", size: '50x50', class: "rounded-circle " %>
                                         #↑自分の好きなデフォルト画像を入れてください
<% end %>

User一覧ページにも円形のプロフィール画像設置

app / views / users / index.html.erb

<% if user.avatar? %>  
   <%= image_tag user.avatar.url, size: '50x50', class: "rounded-circle" %>
<% else %>
   <%= image_tag "no-image.png", size: '50x50', class: "rounded-circle" %>
<% end %>

マイページにも円形のプロフィール画像設置

app / views / users /show.html.erb

<% if @user.avatar? %>  
   <%= image_tag @user.avatar.url, size: '50x50', class: "rounded-circle" %>
<% else %>
   <%= image_tag "no-image.png", size: '50x50', class: "rounded-circle" %>
<% end %>

参考サイト: