【rails】carrierwaveを使って画像をアップロード、表示させる方法

CODE
のり
のり

railsで画像をアップロードしたり、表示させる方法が知りたい!

こんな意見に答える記事です。

Gemのインストール

Gemファイルにcarrierwaveを追記する。

gem 'carrierwave'

bundle インストール

$ bundle install

carriewaveのuploaderを生成

$ rails g uploader images

app/uploaders/images_uploader.rbが生成される

データベースへ画像保存用のカラムを追加

今回、例としてuserテーブルにimageというカラムを追加する

$ rails g migration AddImageToUser image:string

マイグレーションをおこなう

$ rails db:migrate

Modelへの紐づけ

今回はUserモデルに追加するので、model/user.rbに以下を追記する

mount_uploader :image, ImagesUploader

Controller

strong parameterなどに追加をおこなう

  def user_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation, :image)
  end

View

image用のフォームを該当のviewファイルに追記する

        <%= f.label :image %>
        <%= f.file_field :image, class: 'form-control'  %>

アップロードされた画像ファイルは、public/uploads下に格納されるはずなのでアップロードしたら確認してみる。

画像の表示は、Viewファイルに以下を記載することで表示される

<%= image_tag user.image.to_s %>

サーバー再起動

bundle installをしたあとにサーバーを再起動していない場合はする

最後に

いかがでしたか?

少しでも役に立てたのなら嬉しいです。

では!

コメント

タイトルとURLをコピーしました