ruby-on-rails Rails 7 -根据对象字段内容选择呈现HTML或PDF

bq9c1y66  于 2023-02-26  发布在  Ruby
关注(0)|答案(1)|浏览(197)

我的Rails 7应用包含一个Article资源,它有一个source字段(字符串),包含指向博客文章的有效外部URL-index方法返回一个文章列表,其中包含指向每个源的link_to方法。
我需要添加一个已有PDF文件的目录到文章中。它们当前位于/public/pdfs/(如果需要,可以移动到其他位置)。我可以使用相同的“源”字段来包含外部URL(https://..)和本地静态文件(/public/pdfs/...)吗?或者我需要填充资源中另一个仅PDF定位器字段吗?
所有的PDF文件都已经存在,不需要生成。
任何最佳实践都值得赞赏。

mspsb9vt

mspsb9vt1#

最佳实践是使用Active Storage,因为它是处理文件附件的内置方式。
您没有说明文件是用户输入的还是服务器生成的,但我看到了以下三种情况:

1.该文件是用户通过表单输入的

这是涵盖最多的活动存储用途,您会发现许多tutorials

2.该文件由rails应用程序在服务器上生成

Active Storage允许您附加IO流对象,因此您可以附加生成器的输出(如果返回IO)或临时文件

def Article < ApplicationRecord
  has_one_attached :pdf
end

Article.last.pdf.attach(io: File.open(filepath), filename: 'article.pdf', content_type: 'application/pdf')`

3.该文件是由其他进程生成的服务器文件

在这种情况下,你需要找到一种方法来将文件传递给应用程序。以下是我的想法:

  • 将软件 Package 成某种作业,以便可以在Rails应用程序上下文中运行它
  • 实现HTTP API以将文件上载到应用程序
  • 编写一个目录观察器,并根据文件名将目录中的新文件附加到文章中(我认为这是最不可靠的方法,但救了我一次,所以我决定提到它)

相关问题