繁体   English   中英

从javascript调用rails时如何导出xls

[英]How to export xls when calling rails from javascript

我试图通过javascript调用触发excelsheet下载。 当我使用link_to按钮调用rails动作时,它可以正常工作。 但是,当我通过js脚本调用Rails动作时(我想这样做),我在日志中得到了相同的渲染消息,但是excel无法下载。 我认为这与ajax / background任务调用有关,但我无法弄清楚。 任何想法如何使javascript方法起作用?

Rails动作:

def goal_designer_spreadsheet
  @format = params[:format]
  logger.debug "\nformat = #{@format} \n"
  respond_to do |format|
    format.html 
    xls_filename = "Excel_file__abc.xls"
    format.xls {headers["Content-Disposition"] = "attachment; filename=\"#{xls_filename}\"" }
  end
end

2个按钮:1个触发JS调用(不起作用),一个直接指向rails(起作用):

<button class="btn btn-primary" id="goal_download_list">Download this Plan (.xls) javascript</button>

<%= link_to "Download this Plan (.xls) rails", plan_goal_designer_spreadsheet_path(format: "xls"), :id => "", :class => "btn btn-small btn-primary" %>

JavaScript调用:

if ( trigger_object.id.match(/goal_download_list/) ) {
  $.ajax({
    type:  'get',       
    url:   "/plan/goal_designer_spreadsheet",
    data: { 
      "format":   "xls"
    },
    success: function(data, textStatus) {
    }      
  });  
}    

输出日志:在两种情况下相似,但是在JS调用的情况下,没有xls下载:

Rendered plan/goal_designer_spreadsheet.xls.erb (0.0ms)
Completed 200 OK in 344ms (Views: 339.9ms | ActiveRecord: 0.0ms)

也许最好进行重定向:

window.open("plan/goal_designer_spreadsheet.xls", "_blank");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM