Skip to main content
 首页 » 编程设计

ruby-on-rails中Rails 中公共(public)目录中的文件中Errno::ENOENT (没有这样的文件或目录@ rb_sysopen

2025年05月04日47zhoujg

我目前正在使用 combine pdf 开发 Rails 5.2 应用程序 gem 。我正在尝试合并两个 PDF 文件,但不知何故我无法从 public 目录加载文件。

在 Controller 中我有以下方法:

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

请您参考如下方法:

这为我解决了这个问题:

  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