我最近开始在Ruby on Rails中开发,因此我认为自己是初学者。
我正在测试Active Admin gem(http://activeadmin.info/),我在将视图导出为PDF时发现了一个问题。
在官方文档中说明如何自定义下载链接(http://activeadmin.info/docs/3-index-pages.html,它位于文档的末尾)但不适用于我。
当我输入以下代码行时:
Mymodel ActiveAdmin.register do
index: download_links => [: pdf]
end
结果是localhost:3000 / admin / mymodel.pdf的链接,并显示以下错误:“无法加载PDF文档”。
两个问题:
我将非常感激。
答案 0 :(得分:9)
此问题暂时受到质疑,但我为未来的搜索者添加了一个更具体的ActiveAdmin示例,因为@ user2163649的答案是一种更为通用的方法。
首先,我们需要明确指出ActiveAdmin不支持开箱即用的PDF导出。你需要自己实现它。
我选择了WickedPDF gem来创建PDF,但你可以根据你的需要和限制从P several other options中选择,如Prawn,Pdfkit等。
# Gemfile
gem 'wicked_pdf'
# app/admin/pages.rb
ActiveAdmin.register Page do
controller do
# if you want /admin/pages/12345.pdf
def show
super do |format|
format.pdf { render(pdf: "page-#{resource.id}.pdf") }
end
end
end
# if you want /admin/pages/12345/pdf, pdf_admin_page_path(@page)
member_action :pdf, method: :get do
render(pdf: "page-#{resource.id}.pdf")
end
end
# app/views/admin/order_items/show.pdf.erb
<h1>page <%= resource.id %></h1>
<p><%= resource.body %></p>
# app/views/admin/order_items/show.html.erb
<h1>page <%= resource.id %></h1>
<p><%= resource.body %></p>
答案 1 :(得分:4)
尝试prawn gem ..我认为它是用于生成PDF文档的最优秀的ruby库..
离。
索引中的
respond_to do |format|
format.html
format.pdf do
pdf = SalePdf.new(@sales)
send_data pdf.render, filename: "Daily_Sales_Report, :disposition => "inline"
end
end
sale_pdf.rb
class SalePdf < Prawn::Document
text "sample pdf"
end
github上: https://github.com/prawnpdf/prawn