除非在新标签页上加载了链接,否则Ruby send_file不起作用

时间:2019-10-06 03:45:20

标签: ruby-on-rails

无论出于何种原因,我的send_file并没有真正提示用户下载文件。但是,如果我右键单击触发send_file操作的链接,则会提示用户下载文件。它只是不在链接的同一页面上提示它。

不确定为什么会发生这种情况,但这是我在控制器中执行的操作:

  # GET /consultants/agents/1/download_ssh_key
  def download_ssh_key
    @agent = Agent.find(params[:agent_id])
    send_file "/home/shared/agent_#{@agent.uuid}"
  end

当我在浏览器中单击此链接(不打开新选项卡)时,这就是我在控制台中看到的内容:

I, [2019-10-05T22:40:47.713625 #3211]  INFO -- : [1f170528-920b-4330-9d17-7107220235dd] Started GET "/consultants/agents/9/download_ssh_key" for 66.195.29.70 at 2019-10-05 22:40:47 -0500
I, [2019-10-05T22:40:47.714597 #3211]  INFO -- : [1f170528-920b-4330-9d17-7107220235dd] Processing by Consultants::AgentsController#download_ssh_key as HTML
I, [2019-10-05T22:40:47.714673 #3211]  INFO -- : [1f170528-920b-4330-9d17-7107220235dd]   Parameters: {"agent_id"=>"9"}
D, [2019-10-05T22:40:47.717697 #3211] DEBUG -- : [1f170528-920b-4330-9d17-7107220235dd]   Agent Load (0.5ms)  SELECT  `agents`.* FROM `agents` WHERE `agents`.`id` = 9 LIMIT 1
I, [2019-10-05T22:40:47.719397 #3211]  INFO -- : [1f170528-920b-4330-9d17-7107220235dd] Sent file /home/shared/agent_22ac92d1 (0.3ms)
I, [2019-10-05T22:40:47.720488 #3211]  INFO -- : [1f170528-920b-4330-9d17-7107220235dd] Completed 200 OK in 6ms (ActiveRecord: 0.5ms)

我的send_file操作中是否缺少某些本应触发下载提示的内容?根据{{​​3}},默认选项是将其作为附件发送(提示下载),而不是在浏览器中加载文件。

任何帮助将不胜感激。

0 个答案:

没有答案