Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails,用于下载带有ajax的pdf并发送文件()的选项\u_Javascript_Ajax_Ruby On Rails 3_Pdf - Fatal编程技术网

Javascript Rails,用于下载带有ajax的pdf并发送文件()的选项\u

Javascript 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

快速背景:想要发送一个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 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