ActiveAdmin在表单提交时删除附加的CarrierWave图像

时间:2013-11-11 19:52:31

标签: ruby-on-rails-4 carrierwave activeadmin

我不确定我在这里做错了什么。文件上传正在运行,但如果我提交表单而未选择要上传的文件,则会删除以前附加的图像。

以下是ActiveAdmin表单的内容:

form do |f|
  f.inputs do
    f.input :model_number
    f.input :description
    f.input :slug
    f.input :categories
    f.has_many :product_images do |image|
      image.input :product_id, as: :hidden, id: :product_id, input_html: { value: "%i" }
      image.input :image
    end
  end
  f.actions
end

各个型号的相关部分:

class ProductImage < ActiveRecord::Base
  belongs_to :product

  mount_uploader :image, ProductImageUploader

  validates :image, :product_id, presence: true
end

class Product < ActiveRecord::Base
  has_many :product_images, dependent: :destroy

  accepts_nested_attributes_for :product_images

  validates_associated :product_images
end

任何见解都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:4)

我的验证看起来有点过于热心了。从ProductImages验证中删除产品ID并将表单中的image.input :product_id, as: :hidden, id: :product_id, input_html: { value: "%i" }简化为表单中的image.input :product_id, as: :hidden,可以使图像正确附加到现有产品或新产品。