我有一个运行ActiveAdmin的ROR应用程序并使用CarrierWave上传图像。我有一个模型:产品,允许多个ProductImages。当只是添加新产品并选择要上传的多个图像时,所有这些似乎都很顺利。但是,一旦我想编辑该产品,图像似乎实际上没有上传,而且我收到以下错误:
undefined method `image_changed?'
我的假设是初始上传不会做太多,因此在编辑时结束为空。
以下是管理员表单的摘要:
ActiveAdmin.register Product do
form(:html => {:multipart => true}) do |f|
f.inputs "Details" do
f.input :name
f.input :descr, :label => "Description"
f.input :brand, :as => :select, :collection => Brand.all, :member_label => :name, :label => "Brand"
# tags
f.autocomplete_field :tag_list, '/products/autocomplete_tag_name', :"data-delimiter" => ', '
f.input :tag_list, :hint => "Comma delimited tags"
end
f.has_many :product_images do |pi|
pi.inputs "Product Images" do
if !pi.object.nil?
pi.input :_destroy, :as => :boolean, :label => 'Destroy?'
end
pi.input :image_name
pi.input :image
end
end
f.buttons
end
end
修改的
我知道更多的事情,图片确实会在创建帖子时上传,其中的编辑就会起作用。
答案 0 :(得分:0)
前一段时间我遇到了同样的问题(但是使用了Paperclip)。解决方案(不明显)是,如果用户未在编辑表单中提供密码以确认更新,则图像未更新。
所以,如果您没有尝试这个,那么可能值得:在编辑产品时要求用户输入密码,然后查看图像是否正确更新。
答案 1 :(得分:0)
我最近遇到过这个问题。 请更新您的表单字段,如下所示。您必须将输入字段设置为文件。
pi.input :image, :as => :file