paperclipおぼえがき
paperclipの簡単な使い方について書く。
https://github.com/thoughtbot/paperclip
だいたいの手順
(0) ImageMagickをportsでインストール
(1)マイグレーションファイルを作成
画像と紐付けたいモデルにpaperclipの項目を付加する
(2)モデルにpaperclipの設定情報を書く
Userモデルに画像をくっつけたいならUserモデルに書く。
(3)テンプレートに画像を参照する入力フォームを作る
paperclipが用意しているヘルパーメソッドをViewに書く
(4)呼び出し方
(1)マイグレーションファイルを作成
以下のような内容のマイグレーションファイルを作成する。
def up add_attachment :animals, :avatar end def down remove_attachment :animals, :avatar end
(2)モデルにpaperclipの設定情報を書く
同じく以下を画像を関連づけたいモデルに、attr_accessibleとhas_attached_fileを定義する。
class User < ActiveRecord::Base attr_accessible :avatar has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png" end
(3)テンプレートに画像を参照する入力フォームを作る
以下をformの中に書く。scaffoldで作成したフォームがあるならfile_fieldメソッドだけでよい。
<%= form_for @user, :url => users_path, :html => { :multipart => true } do |form| %> <%= form.file_field :avatar %> <% end %>
(4)呼び出し方
<%= image_tag @animal.avatar.url(:thumb) %>
urlメソッドにモデルで定義している文字を渡してやればその大きさで表示してくれる。
削除
@animal.avatar = nil @animal.save
(確か)この時にレコードはもちろんのこと、ファイルとして保存している画像も削除してくれる。