#プログラミングの勉強日記
2020年7月27日 Progate Lv.226
#概要
こちらの記事で扱ったgemのCarrierWave用いる。アップロードしたファイルの保存先はデフォルトでpublic/uploadsになる。
前提として、scaffold
のコマンドで作られている。(以下のは例)
ターミナル
rails generate scaffold user name:string email:string image:string
#使い方
CarrierWaveを使うためにGemfileを編集する
Gemfile
gem 'carrierwave'
Gemfileを編集したら、CarrierWaveをインストールする。
ターミナル
bundle install
アップローダークラスとカラムの紐づけをする。
class モデル名 < ActiveRecord::Base
mount_uploader [:カラム名], [アップローダークラス]
end
AvatarアップローダとUserモデルに作成したフィールドavatarを関連付ける。(avatarにアップロードした画像をAvatarアップローダが処理するイメージ)
app/models/user.rb
class User < ActiveRecord::Base
mount_uploader :avatar, AvatarUploader
end
これに合わせてビューファイルを変更する。
app/views/users/_form.html.erb
<div class="field">
<%= form.label :avatar %>
<%= form.file_field :avatar, id: :user_avatar %>
</div>
app/views/users/show.html.erb
<p>
<strong>Avatar path:</strong>
<%= @user.avatar_path %>
</p>
<p>
<%= image_tag @user.avatar_path %>
</p>
モデルとビューを修正したので、これでCarrierWaveの基本機能が使えるようになった。
参考文献
https://pikawaka.com/rails/carrierwave
https://www.sejuku.net/blog/65175