2015-05-22 4 views
2

Я храню квитанции в формате PDF в S3. Я использую WickedPDF для генерации файлов PDF. Через админку нашего приложения, есть «Скачать» ссылку, то есть просто прямая ссылка на пути S3:Рендеринг PDF в браузере (вместо загрузки по умолчанию)

link_to "Download", order.receipt.url unless order.receipt.blank? 

Любая идея о том, как я могу иметь его по умолчанию для открытия в окне браузера прямой загрузки?

ответ

0

Рендер PDF:

render pdf: "Invoice", 
     orientation: 'Portrait', 
     template: "Invoice/download", 
     page_size: 'Letter' 
1

Хитрость заключается в том, чтобы изменить заголовки, если вы ссылку на статический файл ваш веб-сервер (S3) будет добавить заголовок Content-Disposition: attachment; filename="name.pdf" без этого заголовка браузер будет пытаться оказывать это встроенное (то же окно).

Чтобы решить эту проблему, вы могли бы иметь действие на контроллере, который downlaods сам файл и парит его пользователю

require "open-uri" 

class OrderController 
    def receipt 
    @order=Order.find(....) 

    render text: open(@order.receipt.url).read, content_type=>'application/pdf' 
    end 
end 

Очевидно добавить маршрут к нему, идентифицирующему порядку и связь с этой новой акцией, это приведет к тому, что pdf-файл будет загружен с помощью рельсов без заголовка «вложения».

-1

использование send_file способ. Это ссылка, которая может вам помочь. http://apidock.com/rails/ActionController/Streaming/send_file

+1

Пожалуйста, не предоставляйте ссылки только на ответы. Ссылки быстро заходят в интернет, а затем этот ответ бесполезен. Включите соответствующие части, которые вы хотели бы выразить в ответах –