Javascript Rails,用于下载带有ajax的pdf并发送文件()的选项\u
快速背景:想要发送一个pdf到客户端下载,有些pdf是静态的,有些是我们用pdftk生成的 在看了这个问题后,我把它拼凑起来: HTMLJavascript Rails,用于下载带有ajax的pdf并发送文件()的选项\u,javascript,ajax,ruby-on-rails-3,pdf,Javascript,Ajax,Ruby On Rails 3,Pdf,快速背景:想要发送一个pdf到客户端下载,有些pdf是静态的,有些是我们用pdftk生成的 在看了这个问题后,我把它拼凑起来: HTML <select id="download_policy_docs_select"> <%= options_for_select(@file_list) %> </select> <input id="download_policy_doc" type="submit" class="btn btn-info b
<select id="download_policy_docs_select">
<%= options_for_select(@file_list) %>
</select>
<input id="download_policy_doc" type="submit" class="btn btn-info btn-180px" value="DOWNLOAD" />
策略控制器:
def policy_declaration(id)
policy = Policy.find(params[:id] || id)
return unless enforce_policy_access(policy)
file_path = PolicyPdf.generate_policy_declaration(policy)
send_file(file_path, :filename => "#{policy.name}_declaration.pdf", :disposition => 'Content', :type => 'application/pdf')
end
def ajax_get_policy_document
policy = Policy.find_by_name(params[:policy_name])
if params[:document] == 'proof_of_insurance'
redirect_to :action => 'policy_declaration'
elsif params[:document] == 'master_cert'
#redirect_to PolicyPdf.get_policy_pdf_filepath(policy)
elsif params[:document] == 'im_declaration'
redirect_to :action => 'policy_declaration'
elsif params[:document] == 'im_master_cert'
# redirect_to PolicyPdf.get_policy_pdf_filepath(policy)
elsif params[:document] == 'invoice'
redirect_to policy_invoice
elsif params[:document] == 'legacy_cert'
redirect_to :action => 'policy_declaration'
else
"it's broke!"
end
end
我的理解是,虽然ajax无法下载文件,但如果我重定向到另一种方法policy_declaration
,让它使用正确的:disposition
发送文件,那么我实际上可以下载文件,因为它是从服务器发送的,而不是作为对ajax请求的响应
因此,我的问题是:
- 我的理解哪里出错了
- 我是否可以修复当前代码以使其按需要工作
- 如果我不能做到以上几点,我该怎么办李>
如果有人问我为什么要这样做。我对rails
form\u helpers
(其他很多问题都是这么说的)不是很在行。。。因此,如果这是答案,我们将非常感谢您在这方面提供的帮助 :处置
应该是内联的
或附加的
。
def policy_declaration(id)
policy = Policy.find(params[:id] || id)
return unless enforce_policy_access(policy)
file_path = PolicyPdf.generate_policy_declaration(policy)
send_file(file_path, :filename => "#{policy.name}_declaration.pdf", :disposition => 'Content', :type => 'application/pdf')
end
def ajax_get_policy_document
policy = Policy.find_by_name(params[:policy_name])
if params[:document] == 'proof_of_insurance'
redirect_to :action => 'policy_declaration'
elsif params[:document] == 'master_cert'
#redirect_to PolicyPdf.get_policy_pdf_filepath(policy)
elsif params[:document] == 'im_declaration'
redirect_to :action => 'policy_declaration'
elsif params[:document] == 'im_master_cert'
# redirect_to PolicyPdf.get_policy_pdf_filepath(policy)
elsif params[:document] == 'invoice'
redirect_to policy_invoice
elsif params[:document] == 'legacy_cert'
redirect_to :action => 'policy_declaration'
else
"it's broke!"
end
end