Rails 4 - how to make a link to a PDF file (name.PDF)?

user984621 picture user984621 · Aug 26, 2014 · Viewed 7.3k times · Source

I am generating PDF files and my link look like this:

<%= link_to 'Invoice', display_invoice_path(invoice.id), :format => :pdf %>

When I click on this, it takes me to /display_invoice/123456789 (it's an HTML version).

In the controller action is following:

def display_invoice
    if params[:invoice_number]
      @invoice = ...

      respond_to do |format|
        format.html
        format.pdf do
          #render pdf: '123',                  # file name
          render pdf: params[:invoice_number],
                 layout: 'layouts/application.pdf.erb'#,  # layout used
                 #show_as_html: params[:debug].present?    # allow debuging
        end
      end
    end
  end

and in the routes:

  get '/display_invoice/:invoice_number', to: 'invoices#display_invoice', :as => 'display_invoice'

After clicking the link, I'd like to have in the URL /display_invoice/INVOICE_NUMBER.pdf - currently, there's just /display_invoice/INVOICE_NUMBER.

How to open it with the ".pdf" suffix?

Thank you.

Answer

koffeinfrei picture koffeinfrei · Aug 26, 2014

You need to add the pdf mime type.

Add the following line to the file config/initializers/mime_types.rb:

Mime::Type.register "application/pdf", :pdf

See http://guides.rubyonrails.org/action_controller_overview.html#restful-downloads for details.

EDIT:

The format needs to be part of the path helper:

display_invoice_path(invoice.id, :format => :pdf)