file_columnを使う
file_columnの使い方をメモ。
model
対象となるテーブルに"image"カラムをstringで作成。
model/pic.rbに下記を追加。
file_column :image, :magick => { :versions => { :thumb => "100x100>", :large => "200x120>" }
上記の例では、public/pic/image/id 以下に次のように格納される。※idは数字
※idが"1"、ファイル名が"img.jpg"、イメージサイズが W640,H480の場合 1 | img.jpg(オリジナルサイズ) | +---large | img.jpg(W100,H75) | \---thumb img.jpg(W160,H120)
アップロード時にリサイズする場合は次のようにmodelを変更する。
file_column :image, :magick => { :size => "50x50>" :versions => { :thumb => "100x100>", :large => "200x120>" }
これでオリジナルサイズが"size"で指定したサイズになる。
なお、"versions"以下で指定した値より小さい値としても、"versions"には指定したサイズで格納される。
view
アップロードする際は、formで":multipart => true"を指定する。
<% form_for(@pic,:html => { :multipart => true}) do |f| %>
アップロードフォーム
<%= file_column_field "pic", "image" %>
画像表示
<%= image_tag url_for_file_column(product_pictures, "image", "large") %>
"large"はmodelで指定した画像サイズ。省略するとオリジナル画像が表示される。
使い方は以上。一度覚えれば非常に簡単!
画像一覧への追加、選択、他のモデルとの連携の方が意外と労力使うんだよなぁ。