ファイルのアップロード用ライブラリで**CarrierWave**を使って、
画像アップロードをしてみたいと思います。
(環境:Ubuntu12.04, Ruby1.9.3, Rails3.1.13)

CarrierWaveはRMagickを使うので、事前にインストールしてあります。

既存のRailsアプリに画像をアップロードする機能を追加する事にします。

サンプルとしてfishingといモデル名でscaffoldして土台を作ります。

Gemfileへ追加します。

変更を反映します。

アップロード用のクラスの生成

ImageUploaderクラスが作られます。
app/uploaders/image_uploader.rb

次にfishingモデルにアップローダを追加します。

fishingsテーブルに列を追加するため、migrationを生成します。

app/modeles/fishing.rbへ追加

app/views/fishings/_form.html.erbを修正

app/views/fishings/index.html.erbの表示したい場所に追加

app/views/fishings/show.html.erbへも追加

ここで画像サイズを自動で調整してくれるRMagickを使います。

app/uploaders/image_uploader.rbを修正

この記述の行のコメント(#)を削除し有効にします。

下記も追加します。

NoMethodError (undefined method `scale’〜 というエラーが出るので:scaleから:resize_to_limit へ変更すれば良いみたいです。
Undefined Method Scale In CarrierWave

サーバ起動して、
http://localhost:3000/fishings
にアクセスして画像がアップロード出来るようになりました。

こういうブログもありました。

人気のあるブログ: