我正在生成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;后缀?
谢谢。
答案 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" %>