1,はじめに
Railsで画像投稿の機能を実装するには、CarrierWaveというgemを使うと便利です。
2,Gemをインストール
carrierwaveを使用するためにまずはgemをインストールしましょう。
gem 'carrierwave'
gem 'mini_magick'
mini_magickを導入することで画像の大きさをリサイズできます。
$ bundle install
ターミナルでbundle installしてgemをインストールしましょう。
3,アップローダーを作成
carrierwaveを導入して、まずはアップローダを作成する必要があります。
$ rails g uploader image
app/uploaders/image_uploader.rb が生成される。
4,データベースのテーブルにimageカラムを作成
データベースのテーブルに画像保存用のカラムを追加します。
$ rails g migration add_image_to_users image:string
usersテーブルにstring型のimageカラムが追加されます。
カラムが追加されたらrails db:migrateしましょう。
$ rails db:migrate
4.Userモデルを編集
ImageUploaderとimageカラムを紐づけます。
class User < ActiveRecord::Base
mount_uploader :image, ImagesUploader
end
mount_uploader :carrierwave用に作ったカラム名, carrierwaveの設定ファイルのクラス名となります。
5,画像を送信する。
form_forで画像を送信できるようにします。
= form_for(@user) do |f|
= f.label :image
= f.file_feild :image
6,画像を表示する
画像を表示できるようにします。
= image_tag @user.image.url
追記:画像のサイズを設定するには?
image_uploader.rbにサイズ変更を記述することができます。
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_fit: [800, 800]
end
resize_to_fit:[高さ,横]のサイズを指定することができます。