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

此生再无相见时 提交于 2019-12-07 04:58:50

问题


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.


回答1:


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)



回答2:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!