4

我有一个运行 ActiveAdmin 并使用 CarrierWave 上传图像的 ROR 应用程序。我有一个模型:Product,它允许多个 ProductImage。仅添加新产品并选择要上传的几张图像时,一切似乎都很好。但是,一旦我想编辑该产品,图像似乎并没有实际上传,而且我收到以下错误:

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

编辑

我还知道一件事,图片确实是在创建帖子时上传的,它的编辑来自那个动作..

4

2 回答 2

0

不久前我遇到了同样的问题(但使用的是回形针)。解决方案(不明显)是如果用户未在编辑表单中提供密码以确认更新,则图像未更新。

因此,如果您没有尝试此操作,可能值得:在编辑产品时要求用户输入密码,然后查看图像是否正确更新。

于 2012-06-07T09:58:08.617 回答
0

我最近遇到了这个问题。请更新您的表单字段,如下所示。您必须将输入字段设置为文件。

pi.input :image, :as => :file
于 2015-07-08T07:25:08.033 回答