【Rails】PaperClip + active_adminで画像をアップロード
PaperClipを使うためにはImageMagikが必要なので、インストールされていない場合はインストールする。
# MacのHomeBrewでインストールする場合 brew install imagemagick
Gemfile
gem 'paperclip', '~> 4.1'
Migration
rails g migration AddFileUploadToItemImages
class AddFileUploadToItemImages < ActiveRecord::Migration def change add_attachment :item_images, :image end end
Model
has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }, # 1つのモデルが複数の画像をもつ(has_many)場合、下記の指定が必要らしい :path => ":rails_root/public/system/:attachment/:id/:style/:filename", :url => "/system/:attachment/:id/:style/:filename" validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] }
ActiveAdmin
app/admin/item_image.rb # permit_paramsで添付ファイルのフィールド名(今回はimage)を追加 permit_params :name, :item_id, :image form do |f| f.inputs "アイテム画像" do f.input :item f.input :name f.input :image, :as => :file, :hint => f.object.new_record? ? "" : f.template.image_tag(f.object.image.url(:thumb)) end f.actions end show do |item_image| attributes_table do row :name row :item # show画面で画像を表示するためのタグを追加 row :image do image_tag(item_image.image.url(:medium)) end end end
こんな感じで画像をアップロードできるようになりました。
参考記事
Paperclip with Rails4 and active admin
RailsでPaperclipを使ってみたメモ [俺の備忘録]
Rails4+Paperclip+ActiveAdminのメモ - Qiita