是否可以通过rails中的ajax请求使用send_data(而不是send_file)?

时间:2018-02-23 15:32:38

标签: ruby-on-rails ruby

我有一个下载动态生成文件的链接。我的运作方式如下:

  • 我在资源上创建了自定义控制器操作(在routes.rb中创建了自定义路由)
  • 单击链接(此时为非ajax)将指向此自定义Controller操作
  • 生成文件,自定义控制器操作中的最后一行是send_data,它将文档流式传输给用户。

更新:建议包含代码。以下是该自定义控制器操作中的代码:

class MyController < ApplicationController
  def custom_action_sending_pdf
    pdf = InitMyPdf.new(@user)
    send_data pdf.render, filename: "complete_report.pdf", type: "application/pdf"
  end
end

问题是 next 请求request.referrer现在将引用自定义控制器操作,我不想要要做到这一点。这也反映在网址中。

  • 当我稍后在我的应用中重定向回request.referrer时,这特别成为一个问题。当request.referrer是此自定义控制器操作时:它不会重定向到实际页面,而只是重新下载文档。

相反,我试试这个:

  • 通过remote: true选项将 ajax 请求链接到该自定义操作

一方面:request.referrer现在正好似乎没有引用该控制器动作。但是,现在文件没有下载!

我做了一些环顾四周:

  • This question没有可以立即应用的答案。
  • This question适用于下载对我不起作用的静态文件,因为我的文件是动态生成的,因此我使用send_data将生成的文件发送给用户而不是{{1} }。

问题:最终我试图让用户下载动态生成的文件,同时不更改页面(保持send_file相同)。这可能吗?

更新 我知道this question但问题是它接受的答案是使用request.referrer,因为我的文件是动态生成的:send_file在这里对我不起作用。

0 个答案:

没有答案