RoR Carrierwave:添加多个上传的远程文件

时间:2017-11-07 08:43:32

标签: ruby-on-rails carrierwave

我可以使用carrierwave一次上传多个文件,如下所述: https://github.com/carrierwaveuploader/carrierwave#multiple-file-uploads

所以我有

class Item < ActiveRecord::Base
  mount_uploaders :images, ImagesUploader
  serialize :images, JSON
  ...
end

现在我要上传远程文件(而不是本地驱动器)。通常我会在我的控制器中使用这样的东西

class ItemsController < ApplicationController
  ...
  item.remote_images_url = params[:image_url]
  ...
end

但帮手 remote_images_url (介意复数版 remote_ 图片 _url )只给我

  

未定义的方法remote_images_url

我还尝试了 remote_image_url ,这是单个文件上传时的默认助手。也是未定义的方法。

使用&#34;上传多个文件时如何上传远程文件&#34;与carrierwave?

2 个答案:

答案 0 :(得分:1)

最后我查看了carrierwave的github存储库,我发现了这个:

https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/mount.rb

幸运的是,这个文件的评论中都描述了这一切。我只能改变一件小事。在评论中,它说对于名为 images 的列,我必须使用辅助方法 remote_image_urls 。但实际上我必须使用 remote_images_urls (总是复数)。

这就是我案例中的解决方案:

class Item < ActiveRecord::Base
  mount_uploaders :images, ImagesUploader
  serialize :images, JSON
  ...
end

class ItemsController < ApplicationController
  ...
  item.remote_images_urls = [params[:image_url]]
  ...
end

在helper方法中注意正确的复数类型以及params的周围数组(carrierwave表示数组)。

答案 1 :(得分:0)

您需要使用item.remote_images_urls而不是item.remote_images_url并分配远程网址数组。虽然CarrierWave ruby​​doc建议我使用item.remote_image_urls,但这对我有用。所以,也许你应该尝试其中一种。

供参考CarrierWave rubydoc