Визуализация файла Markdown, хранящегося в S3, загруженного с помощью shrine - Rails

Я использую shrine для загрузки файлов из моего приложения rails на S3. Все работает нормально, но я не знаю, как отобразить этот файл, используя gem redcarpet.

Например, я могу сделать это:

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

И работает отлично.

Но если я сделаю это:

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

Показывает мне ссылку для скачивания с S3.

Как я могу получить содержимое файла, а не ссылку на файл?

1 ответ

Решение

Позвонить @rfile.rfile возвращает Shrine::UploadedFile объект, который имеет много более удобных методов, чем просто #url, По такому методу есть #read, который извлекает содержимое файла:

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

Однако в этом случае файл будет открыт и прочитан, но не закрыт. Так что лучше позвонить #open с блоком, и вызов #read на полученном объекте ввода-вывода, который можно аккуратно записать в виде

<%= markdown(@rfile.rfile.open(&:read)) %>
Другие вопросы по тегам