1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでcarrierwaveを使って画像をアップロードする方法

Posted at

1,はじめに

Railsで画像投稿の機能を実装するには、CarrierWaveというgemを使うと便利です。

2,Gemをインストール

carrierwaveを使用するためにまずはgemをインストールしましょう。

Gemfile
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カラムを紐づけます。

user.rb
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,画像を表示する

画像を表示できるようにします。

show.html.erb
= image_tag @user.image.url

追記:画像のサイズを設定するには?

image_uploader.rbにサイズ変更を記述することができます。

image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  process resize_to_fit: [800, 800]
end

resize_to_fit:[高さ,横]のサイズを指定することができます。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?