作为我的应用程序中的管理员用户,我可以创建成员资格并附加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吗?
答案 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)
)