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

问题描述 投票:0回答:5

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

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

问题是,当生成新选项卡以生成下载时,屏幕会闪烁。这在视觉上看起来没有吸引力。我见过其他网站,您单击链接,眨眼间就开始下载某些内容。我该怎么做?

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

def download_cc
  scenario = Scenario.find(params[:scenario_id])
  send_data scenario.cc_data, filename: "#{scenario.title}.imscc", type: 'application/zip', :disposition => 'attachment'
end
ruby-on-rails file download ruby-on-rails-5 link-to
5个回答
2
投票

我做了一些本地测试,我的假设是 Turbolinks 搞砸了。我建议您从链接中删除

target: '_blank'
并添加
data: { turbolinks: false }
以选择退出此特定链接的 Turbolinks。更改后的代码应如下所示:

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

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


2
投票

只需在您的链接中添加“下载”属性即可:

<%= link_to image_tag("cc_icon.png"), scenario_download_cc_path(subscription.scenario), download: true %>

0
投票

删除目标

目前,您正在设置 target="_blank",这是告诉浏览器,当您单击该 URL 时,您想要打开一个新选项卡。删除它应该会开始下载,而无需打开选项卡或窗口。

< Optional extra info below as I misread your question: >

设置链接外观的格式

您是否使用任何 HTML 或 CSS 来设计网站?如果是这样,您可以在 css 类中应用 css 状态属性,例如“active”“hover”“visited”“link”。

假设您有一个链接:

<a href="example.com">My Link</a>

如果您创建了 css 文件并自定义了链接的属性:

a:visited {
    text-decoration: none;
}

这将允许您更改访问过的链接的外观。然后,您可以使用任何 css 属性以您想要的任何方式自定义外观。

将 CSS 文件添加到 Ruby 应用程序

使用 Ruby,您可以使用: <%= stylesheet_link_tag "filename" %> 加载 css 文件。

来源: http://www.w3schools.com/css/css_link.asp 如何在 ruby on Rails 应用程序中使用 CSS?


0
投票

只要您使用send_file,您就不应该看到屏幕闪烁

控制器中的

scenario_download_cc_path(subscription.scenario)
操作应如下所示:

file_path = File.join(Rails.root, "/public/myfile.whatever")
send_file file_path

无论您的链接是否包含

target: '_blank'

,Chrome 和 IE 上的行为都是相同的

-1
投票

HTML

<a href="example.com">My Link</a>

CSS

a:visited {
    text-decoration: none;
}

vblink 下载删除

© www.soinside.com 2019 - 2024. All rights reserved.