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.
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)
use this code instead of your code
<%= link_to 'Invoice', display_invoice_path(invoice.id, :format => :pdf) %>
来源:https://stackoverflow.com/questions/25502322/rails-4-how-to-make-a-link-to-a-pdf-file-name-pdf