Визуализация файла 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)) %>