我需要添加一个链接以从 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"
我做错了什么? 请帮助我
您可以执行以下步骤:
步骤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
第 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
将文件放入
/assets
时,您可以使用 Rails 助手 #asset_path
。
<%= link_to 'download', asset_path('/docs/Физика.pdf') %>
来源:http://guides.rubyonrails.org/asset_pipeline.html#asset-organization
奇怪的是,在 link_to 帮助器中使用 HTML download 属性就可以解决问题
<%= link_to "Download", file.file(:original, false), download:true %>
希望这对将来有帮助!
试试这个:
<%= link_to 'download', root_path << '/assets/docs/Физика.pdf' %>
什么对我有用,也是最简单的:
= link_to "Click to download", asset_path("logo.png"), download: true
文档指示如何构建附件文件的下载链接,就像这样
<a href="<%= user.avatar.attached? ? rails_blob_path(user.avatar, disposition: 'attachment') : '#' %>" target="_blank" download>Link</a>
第 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
尝试这样做:
<%= link_to "download", '/assets/docs/Физика.pdf', { download: 'filename' } %>
传递整个路径,并在大括号之间包含下载