Rails的公共目录中的文件-Errno :: ENOENT(无此类文件或目录@ rb_sysopen

时间:2018-07-24 18:13:11

标签: ruby-on-rails ruby pdf controller

我目前正在使用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中,我应该将它们存储在哪里?

2 个答案:

答案 0 :(得分:1)

这对我来说是固定的:

  def pdf_download
    pdf = CombinePDF.new
    pdf << CombinePDF.load(Rails.root.join("public", "pdfs/1.pdf").to_s)
    pdf << CombinePDF.load(Rails.root.join("public", "pdfs/2.pdf").to_s)
    # pdf.save "combined.pdf"

    send_data pdf.to_pdf, filename: "combined.pdf", type: "application/pdf"
  end

答案 1 :(得分:0)

这对我来说是固定的:

pdf << CombinePDF.load("./public/pdfs/1.pdf")