refileは画像に関する処理を便利にしてくれます。
ファイルアップローダーと呼ばれるものです。
- ファイルのアップロードができる
- 画像を簡単に読み込める
- 簡単に画像サイズを変更して表示できる
インストール
以下のコマンドを実行します。
% brew install ImageMagick
以下のコマンドでインストールと書かれている記事もあったのですが、macの場合は上記のようです。
% sudo apt-get update
% sudo apt-get -y install imagemagick
マイグレートファイルに追記してDBを作成しておく
以下のように追記して、$ rails db:migrateを実施する。
今回はdeviseを使用していたのでusersテーブルに以下のように追記しました。
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
...
...
...
t.string :profile_image_id # こちらを追記
end
モデルに記載
今回はuserモデルに以下のように記載しました。
※_idをつけないように注意して下さい。
class User < ApplicationRecord
attachment :profile_image
end
ビューに記載
以下のようにプロフィール画像と名前を表示します。
※fallbackで存在しない場合はno-imageを表示
app/assets/images/no-image.pngの準備が必要
<% @users.each do |user| %>
<%= attachment_image_tag user, :profile_image, fallback: "no-image.png" %>
<%= user.username %>
<% end %>
これで完了です。
コメント