从活动管理员

时间:2016-01-19 11:53:47

标签: ruby-on-rails ruby ruby-on-rails-4 pdf activeadmin

作为我的应用程序中的管理员用户,我可以创建成员资格并附加PDF文件(使用回形针)

在我的视图中,我希望能够点击链接下载该特定会员的PDF文档

因此,Active Admin可让您创建自定义操作(并且还会为您生成路线)

 ActiveAdmin.register Membership do
   collection_action :download_pdf, method: :get do

   end
end

在我看来,我有

column 'File' do |f|
  link_to('Download Membership Form', download_pdf_admin_memberships_path)
end

尝试将这些碎片放在一起

collection_action :download_pdf, method: :get do
  membership = Membership.find(params[:id])
  send_data(filename: "#{membership.file_file_name}.pdf",
            type: 'application/pdf'
           )
end

column 'File' do |f|
  link_to('Download Membership Form', download_pdf_admin_memberships_path(f))
end

此时会生成http://localhost:3000/admin/memberships/download_pdf.60

的网址

点击后我收到错误

Couldn't find Membership with 'id'=

我不确定如何正确构建URL(传递id)并实际下载PDF?

我可以通过方法获取会员资格的ID吗?

1 个答案:

答案 0 :(得分:2)

要下载该文件,您最好使用send_file

send_file membership.file.path

同时修改link_to以正确传递对象的ID,并指定format: :pdf

link_to(
  'Download Membership Form',
  download_pdf_admin_memberships_path(id: object.id, format: :pdf)
)