呈现存储在 S3 中的 Markdown 文件,并使用 shrine 上传 - Rails

Render a Markdown file stored in S3 uploaded with shrine - Rails

我正在使用神社将文件从我的 rails 应用程序上传到 S3。一切正常,但我不知道如何使用 redcarpet gem.

显示该文件

例如我可以这样做:

<div>
    <%= markdown("##title
    * ") %>
</div>

并且工作正常。

但是如果我这样做:

<%= markdown(@rfile.rfile.url) %>

正在向我展示从 S3 下载 link。

如何获取文件内容而不是文件 link?

调用 @rfile.rfile returns 一个 Shrine::UploadedFile 对象,除了 #url 之外,它还有许多更方便的方法。这种方法是 #read,它检索文件的内容:

<%= markdown(@rfile.rfile.read) %>

但是,在这种情况下,文件将被打开并读取,但不会关闭。所以最好用block调用#open,在yielded IO对象上调用#read,可以整齐的写成

<%= markdown(@rfile.rfile.open(&:read)) %>