【发布时间】:2019-06-24 06:25:06
【问题描述】:
我目前正在使用 combine pdf gem 开发 Rails 5.2 应用程序。我正在尝试合并两个 PDF 文件,但不知何故我无法从 public 目录加载文件。
在控制器中我有以下方法:
def pdf_download
pdf = CombinePDF.new
pdf << CombinePDF.load("#{Rails.root}/public/pdfs/1.pdf")
pdf << CombinePDF.load("#{Rails.root}/public/pdfs/1.pdf")
pdf.save "combined.pdf"
send_data combined_file.to_pdf, filename: "combined.pdf", type: "application/pdf"
end
我在 StackOverflow 上尝试了很多帖子,但都没有成功,例如使用 Rails.root。但我仍然得到同样的错误:
Errno::ENOENT (No such file or directory @ rb_sysopen - app/public/pdfs/1.pdf):
要从public 加载文件,我需要做任何额外的配置吗?如果这些 PDF 不应该在 public 中,我应该将它们存储在哪里?
【问题讨论】:
-
为什么一个例子以
#{Rails.root}/开头而另一个以./开头?你的实际代码是什么?这些文件实际存在于哪里? -
您编写的代码与错误消息中的代码明显不同。能否请您验证您运行的是哪个版本的代码,并显示相应的错误(如果有!)
-
如果这些 PDF 不应该公开,我应该将它们存储在哪里?答案是您可以在 amazon s3 上上传您的文件,并且可以使用活动存储
-
@tom-lord 我很抱歉我错误地上传了错误的图片。但是,我通过了这个问题,但想知道是否有更优化的解决方案。请随时对答案发表评论。
标签: ruby-on-rails ruby pdf controller