【问题标题】:RoR Carrierwave: Add remote files with multiple uploadRoR Carrierwave:通过多个上传添加远程文件
【发布时间】:2018-04-19 14:05:12
【问题描述】:

我正在使用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_images_url)只给我

未定义的方法 remote_images_url

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

在使用carrierwave“多文件上传”时如何上传远程文件?

【问题讨论】:

  • item.remote_image_url = [params[:image_url1], params[:image_url2]]
  • 感谢您的评论。但正如我所说,remote_image_url 也因“未定义方法”异常而失败。

标签: ruby-on-rails carrierwave


【解决方案1】:

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

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

幸运的是,这一切都在此文件的 cmets 中进行了描述。我只需要改变一件小事。在 cmets 中,它说对于名为 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

注意辅助方法中正确的复数类型以及参数的周围数组(载波需要数组)。

【讨论】:

    【解决方案2】:

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

    供参考CarrierWave rubydoc

    【讨论】: