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 %>
参考サイト: