Rails 4 - 如何建立PDF文件的链接(name.PDF)?

时间:2014-08-26 09:25:07

标签: ruby-on-rails ruby pdf wicked-pdf

我正在生成PDF文件,我的链接如下所示:

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

当我点击它时,它会转到 / display_invoice / 123456789 (它是HTML版本)。

在控制器中,操作如下:

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

并在路线中:

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

点击该链接后,我想要在网址 /display_invoice/INVOICE_NUMBER.pdf 中显示 - 目前只有 / display_invoice / INVOICE_NUMBER

如何使用&#34; .pdf&#34;后缀?

谢谢。

3 个答案:

答案 0 :(得分:9)

您需要添加pdf mime类型。

将以下行添加到文件 config / initializers / mime_types.rb

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

有关详细信息,请参阅http://guides.rubyonrails.org/action_controller_overview.html#restful-downloads

修改

格式必须是路径助手的一部分:

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

答案 1 :(得分:1)

使用此代码代替您的代码

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

答案 2 :(得分:0)

没有使用哈希火箭的新语法

<%= link_to "Invoice", display_invoice_path(invoide, format: :pdf), target: "_blank" %>

如果要在锚标记中包含URL,请使用.._url代替.._path

<%= link_to "Invoice", display_invoice_url(invoide, format: :pdf), target: "_blank" %>