Как визуализировать PDF в браузере, который извлекается через контроллер rails

У меня есть приложение rails, которое использует Recurly. Я пытаюсь загрузить PDF-файл и отобразить его в браузере. У меня сейчас есть ссылка:

link_to 'Download', get_invoice_path(:number => invoice.invoice_number)

Связанный контроллер имеет метод get_invoice, который выглядит так:

def get_invoice
    begin
      @pdf = Recurly::Invoice.find(params[:number], :format => 'pdf')
    rescue Recurly::Resource::NotFound => e
      flash[:error] = 'Invoice not found.'
    end
  end

Когда я нажимаю на ссылку, я получаю PDF-файл, отображаемый в моей консоли в двоичной форме. Как сделать так, чтобы PDF отображался в браузере?


person Zack    schedule 05.11.2014    source источник
comment
Попробуйте это: apidock.com/rails/ActionController/Streaming/send_file   -  person Ruby Racer    schedule 06.11.2014


Ответы (2)



Вы не отображаете PDF в браузере, вы отправляете его в виде файла. Вот так:

# GET /something/:id[.type]
def show
  # .. set @pdf variable
  respond_to do |format|
    format.html { # html page }
    format.pdf do
      send_file(@pdf, filename: 'my-awesome-pdf.pdf', type: 'application/pdf')
    end
  end
end

Ответ HTML не требуется, если вы не поддерживаете несколько форматов.

Если вы хотите показать PDF-файл в браузере, а не начинать загрузку, добавьте disposition: :inline к вызову send_file.

person Nick Veys    schedule 05.11.2014
comment
disposition: :inline был именно тем, что я искал! Он отображается в браузере вместо загрузки - person Jamesst20; 30.07.2018