如何创建不闪烁的下载链接?

5 ruby-on-rails file download link-to ruby-on-rails-5

我希望用户能够从我在控制器中设置的方法下载文件。此外,当用户下载文件时,我不希望 URL 在我的浏览器中更改。我设置了这个链接

<%= link_to image_tag("cc_icon.png"), scenario_download_cc_path(subscription.scenario), target: '_blank' %>
Run Code Online (Sandbox Code Playgroud)

问题是,当生成新选项卡以生成下载时,屏幕会闪烁。这在视觉上看起来不吸引人。我已经看到其他网站,您单击链接后会立即开始下载某些内容。我怎么做?

编辑: 这是链接调用的函数

def download_cc
  scenario = Scenario.find(params[:scenario_id])
  send_data scenario.cc_data, filename: "#{scenario.title}.imscc", type: 'application/zip', :disposition => 'attachment'
end
Run Code Online (Sandbox Code Playgroud)

Gre*_*vis 2

我做了一些本地测试,我的假设是Turbolinks 把事情搞砸了。我建议您target: '_blank'从链接中删除并添加data: { turbolinks: false }选择退出此特定链接的 Turbolinks。更改后的代码应如下所示:

<%= link_to image_tag("cc_icon.png"), scenario_download_cc_path(subscription.scenario), data: { turbolinks: false } %>
Run Code Online (Sandbox Code Playgroud)

您的控制器操作看起来不错,无需更改。