7

我最近开始使用 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 文档”。

两个问题:

  1. 你有什么建议?
  2. 你能举个例子吗?

我会很感激。

4

2 回答 2

11

前一阵子有人对此提出质疑,但我添加了一个对 ActiveAdmin 更具体的示例,供未来的搜索者使用,因为@user2163649 的答案是一种更通用的方法。

首先,我们需要明确 ActiveAdmin 不支持开箱即用的 PDF 导出。你需要自己实现它。

我选择了 WickedPDF gem 来创建 PDF,但您可以根据自己的需要和限制从其他几个选项中进行选择,例如 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>
于 2014-09-15T06:16:30.043 回答
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

于 2013-05-07T05:01:34.923 回答