【Rails4】active_admin+PaperClipでhas_manyなform
itemモデル has_many :item_image
item_imageモデル belongs_to :item
【Rails】PaperClip + active_adminで画像をアップロード - avosalmonのブログ
上の記事で、itemモデルが複数のitem_imageを持つ(has_many)場合、active_adminのitem登録画面で複数のitem_imageを登録できるようにする。(意味伝わりますかね?)
Model
app/models/item.rb has_many :item_images, :dependent => :destroy accepts_nested_attributes_for :item_images, :allow_destroy => true
app/models/item_image.rb class ItemImage < ActiveRecord::Base belongs_to :item validates :image, presence: true has_attached_file :image, :styles => { :medium => "500x600<", :thumb => "75x90>" }, # 1つのItemが複数のItemImageをもつ場合、下記の指定が必要かも :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"] } end
active_admin
app/admin/item.rb permit_params :name, :price, :item_category_id, :description, :material, :item_images_attributes => [:id, :image, :_destroy] form do |f| f.inputs "アイテム" do f.input :name f.input :price f.input :item_category f.input :description f.input :material f.inputs do f.has_many :item_images, heading: "アイテム画像", allow_destroy: true, new_record: true do |p| p.input :image, :as => :file, :hint => p.object.new_record? ? "" : p.template.image_tag(p.object.image.url(:thumb)) end end end f.actions end
参考記事
Rails4 - Rail 4.1.rc1でActiveAdminとhas_manyなnested form - Qiita
ruby on rails - Activeadmin and Paperclip : ArgumentError - Stack Overflow