活动管理员视图到PDF

Cri*_*Bak 5 pdf-generation ruby-on-rails activeadmin

我最近开始在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
Run Code Online (Sandbox Code Playgroud)

结果是localhost:3000/admin/mymodel.pdf的链接,并显示以下错误:"无法加载PDF文档".

两个问题:

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

我会很感激.

bax*_*ang 9

这是一段时间以前的问题,但我正在为未来的搜索者添加一个更具体的ActiveAdmin示例,因为@ user2163649的答案是一种更通用的方法.

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

我选择了WickedPDF gem用于创建PDF,但您可以根据自己的需要和限制从其他几个选项中选择,如Prawn,Pdfkit等.

# Gemfile
gem 'wicked_pdf'
Run Code Online (Sandbox Code Playgroud)
# 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
Run Code Online (Sandbox Code Playgroud)
# app/views/admin/order_items/show.pdf.erb
<h1>page <%= resource.id %></h1>
<p><%= resource.body %></p>
Run Code Online (Sandbox Code Playgroud)
# app/views/admin/order_items/show.html.erb
<h1>page <%= resource.id %></h1>
<p><%= resource.body %></p>
Run Code Online (Sandbox Code Playgroud)