rails 链接_下载文件

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

我需要添加一个链接以从 asset/docs/Физика.pdf 下载文件 我不知道如何去做。 我试图在这里这样做:在视图中 -

<%= link_to "download", '/Физика.pdf', :download => 'filename' %>

我收到一条错误消息:

No route matches [GET] "/%D0%A4%D0%B8%D0%B7%D0%B8%D0%BA%D0%B0.pdf"

我做错了什么? 请帮助我

ruby-on-rails link-to
9个回答
9
投票

您可以执行以下步骤:

步骤1:打开文件

routes.rb

get 'download_pdf', to: "homes#download_pdf"

Step2:我假设你的

controller
home_controller.rb
,你把这行:

def download_pdf
  send_file "#{Rails.root}/app/assets/docs/Физика.pdf", type: "application/pdf", x_sendfile: true
end

Step3:在您的

view
文件中。

<%= link_to "download", download_pdf_path %>

我建议你把这个

docs
文件夹放在
public
文件夹中。

例如:

public/docs/*.pdf


5
投票

第 1 步:视图

<%= link_to "download", download_path, target: "_blank"%>

第 2 步:路由

match 'download', to: 'home#download', as: 'download', via: :get

第 3 步:内部控制器

send_file 'public/pdf/user.png', type: 'image/png', status: 202

2
投票

将文件放入

/assets
时,您可以使用 Rails 助手
#asset_path

<%= link_to 'download', asset_path('/docs/Физика.pdf') %>

来源:http://guides.rubyonrails.org/asset_pipeline.html#asset-organization


2
投票

奇怪的是,在 link_to 帮助器中使用 HTML download 属性就可以解决问题

<%= link_to "Download", file.file(:original, false), download:true %>

希望这对将来有帮助!


1
投票

试试这个:

<%= link_to 'download', root_path << '/assets/docs/Физика.pdf' %>

1
投票

什么对我有用,也是最简单的:

= link_to "Click to download", asset_path("logo.png"), download: true

0
投票

文档指示如何构建附件文件的下载链接,就像这样

<a href="<%= user.avatar.attached? ? rails_blob_path(user.avatar, disposition: 'attachment') : '#' %>" target="_blank" download>Link</a>

0
投票

Rails 6 解决方案:

第 1 步:

routes.rb
文件中创建下载路径:

get 'download_pdf', to: "homes#download_pdf"

第 2 步: 将链接添加到您的

views

<%= link_to "download", download_single_path(url: 'url', file_name: 'filename') %>

第 3 步: 在控制器

homes_controller.rb
中添加操作,您可以在其中获取在 link_to 中传递的参数:

def download_pdf
  require 'open-uri'
  url = params[:url]
  file_name = params[file_name]
  data = open(url).read
  send_data data, :disposition => 'attachment', :filename=>"#{file_name}.pdf"
end

0
投票

尝试这样做:

<%= link_to "download", '/assets/docs/Физика.pdf', { download: 'filename' } %>

传递整个路径,并在大括号之间包含下载

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