【问题标题】:Rails : Error multiple file upload, empty arrayRails:错误多个文件上传,空数组
【发布时间】:2019-05-22 16:44:28
【问题描述】:

我有一个大问题,我的 Rails 应用程序无法正确上传照片,我每次都会收到此错误。

您可以在照片右侧看到无法上传云端网址

我必须这样做,因为管理员而不是从网站本身添加图片

cars_controller.rb

def index
 @cars = Car.all()
end

def show
 @car = Car.friendly.find(params[:id])
 @photos = @car.photos
 end
end

photos_uploader.rb

 include Cloudinary::CarrierWave

 def store_dir
 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
 end

 def extension_whitelist
  %w(jpg jpeg gif png)
 end

照片.rb

mount_uploaders :photos, PhotosUploader
belongs_to :car

汽车.rb

extend FriendlyId
friendly_id :title, use: :slugged

mount_uploader :photo, PhotoUploader

has_many :photos

你可以看到我的错误

【问题讨论】:

  • 请不要使用错误或代码的截图。我们需要能够轻松读取您的堆栈跟踪。

标签: ruby-on-rails carrierwave cloudinary


【解决方案1】:

mount_uploaders 目前在 Cloudinary Ruby gem 中不受支持。可以在这里https://github.com/cloudinary/cloudinary_gem/issues/304跟踪问题。

有一个示例项目 (https://github.com/taragano/Cloudinary_multiple_uploads) 说明了一种临时解决方法。模型是相册和照片,其中相册与照片的关系为has_many,照片与相册的关系为belongs_to

模型 (https://github.com/taragano/Cloudinary_multiple_uploads/tree/master/app/models) 应如下所示:

class Photo < ActiveRecord::Base
    belongs_to :album
    mount_uploader :image, ImageUploader
end

class Album < ActiveRecord::Base
    has_many :photos, dependent: :destroy
end

在控制器 (https://github.com/taragano/Cloudinary_multiple_uploads/blob/master/app/controllers/albums_controller.rb) 中,您需要遍历每张照片并将其存储到它所属的相册中:

def store_photos
    photos = params[:album][:photos]
    photos.each{|photo| @album.photos.create(image: photo)} if photos
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2015-10-26
    • 1970-01-01
    • 2014-10-14
    • 2017-04-25
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多