小编Zav*_*ski的帖子

S3 上的“path_for”ActiveStorage 附件

我在 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
Run Code Online (Sandbox Code Playgroud)

我可以在项目视图上显示用户发送的所有图像,并且当代码在本地运行时批量下载工作得很好。

对此有什么想法吗?

ruby-on-rails amazon-s3 rails-activestorage

4
推荐指数
1
解决办法
3202
查看次数