ファイルのアップロード用ライブラリとしてよく使われるCarrierWaveを使って簡単アップロードを紹介します。
CarrierWaveをインストール
$vi Gemfile
Gemfileに下記を書いてライブラリを追加します。
gem 'Carrierwave'
ライブラリをインストールします。
$bundle install
基本的な使い方
まずはcarrierwaveを使えるようにします。
アップロード用のクラスの生成
$rails generate uploader image
するとImageUploaderというクラスが作られます。
create app/uploaders/image_uploader.rb
画像のURLを保存するテーブルの列を追加
$ rails g migration add_image_to_テーブル名 image:string
modelsのファイルに付け加えます。
attr_accessible :image mount_uploader :image, ImageUploader
viewsの変更
・_formに付け足します。
<%= form_for ?????, :html => {:multipart => true} do |f| %> … <%= f.file_field :image %> … <% end %>
・画像を表示させるページに付け足します。
<%= image_tag ????.image_url.to_s %>
????はオブジェクト変数を入れます。
これで画像ファイルをアップロードして表示できるようになります。
Rmagickのインストール
1個1個、画像サイズを調節するのは大変なので、自動で画像調整してくれるrmagickをインストールします。
ImageMagickのインストール
yumでインストールしてもいいのですが、rmagickの新しいバージョンはImageMagickの6.4.9以上が必要なのでソースからインストールします。
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz tar xvzf ImageMagick.tar.gz cd ImageMagick-*.*.* ./configure make make install
でImagemagickがインストール完了。
※ubuntu系編
ubuntuの場合はapt-getで簡単インストールが完了です。
sudo apt-get install libmagick9-dev imagemagick libgraphicsmagick3 graphicsmagick
Rmagickのインストール
gem install rmagick
でRmagickがインストールされます。
サムネイル画像を表示させる。
Rmagickをインストールすることで自動でサイズを調整した画像を作れるようになりました。
rails上でRmagickを使い、サイズの調整ができるように設定します。
・app/uploader/image_uploader.rb
include CarrierWave::RMagick … version :thumb do preocess :resize_to_limit=> [200, 200] end def scale(width, height) end
scaleの数字でサイズを調整できます。
サムネイル画像の表示。
・show.html.erb
<%= image_tag ????.image_url(:thumb).to_s %>
で自動調整した画像を表示することができるようになります。
[…] carrierwaveを使って画像をアップロードできるよう(詳しく)にしたら、modelにimageカラムを追加し 下記のようにフォームを作ることでimageを追加できるようにできます。 […]