【发布时间】:2019-05-13 22:30:33
【问题描述】:
我有一个托管在 Heroku 上的应用程序,其中一个用户可以回答测验并提交一些照片(通过 Active Storage,文件被发送到 S3 存储桶),另一个用户可以看到检索的答案和照片。
我使用了一种方法,让用户将测验的所有照片下载到 .zip 文件中,但我在实时应用程序中不断收到此错误消息:
NoMethodError(#ActiveStorage::Service::S3Service:0x0000000006b47368 的未定义方法 `path_for'>):
用于创建.zip文件的方法是:
def quiz_photos_download
@quiz = Quiz.find(params[:quiz_id])
@project = Project.find(@quiz.project_id)
@photos = @quiz.room_photos
arquivo = "#{Rails.root}/tmp/quiz_photos.zip"
Zip::File.open(arquivo, Zip::File::CREATE) do |zipfile|
@photos.each do |photo|
zipfile.add(photo.filename, ActiveStorage::Blob.service.send(:path_for, photo.key))
end
end
send_file(arquivo, :type => 'application/zip', :filename => "Fotos "+@project.name+".zip")
end
我可以在项目视图上显示用户发送的所有图像,并且在本地运行代码时批量下载效果很好。
对此有什么想法吗?
【问题讨论】:
标签: ruby-on-rails amazon-s3 rails-activestorage