RubyOnRails/Carrierwaveとminimagickの導入
くそー変なところでつまづいてた〜〜〜。
ChatSpaceでずっとundefine method 'url'がでていて、変数として使用しているurlなんてmessage.image.url、つまりメッセージから取得した画像のurlしかなかったのです。
で、メッセージテーブルにurlカラムなんてないし、imageテーブルなんて作ってないし一体どういうことなんだと思っていたら。
Carrierwaveとminimagickを導入すればurlメソッドのようなものが使えて、メッセージから取得したimageファイルにurlを埋め込める・・らしい。
つまりCarrierwaveとminimagickを導入し忘れてたってこと!
今回はその導入方法を手早く書いていくぞ!
まずgemの記載。
gemfile
省略
gem 'mini_magick'
gem 'carrierwave'
忘れずにインストール!
ターミナル
bundle install
イメージアップローダーをジェネレートする
ターミナル
rails g uploader image
モデルに記述。
app/models/message.rb
省略
mount_uploader :image, ImageUploader
最後にイメージアップローダーに記述。
app/uploaders/image_uploader.rb
省略
include CarrierWave::MiniMagick
process resize_to_fit: [200, 200]
省略
include~~はimage_uploaderの4行目くらいでコメントアウトされてるので、コメントアウトを解除します。
process resize_to_fitは画像を投稿する際のサイズを決定しています。