Ruby on rails rails中的文件下载链接
我想让访问者选择下载一些pdf。 我试过:Ruby on rails rails中的文件下载链接,ruby-on-rails,ruby-on-rails-3,hyperlink,download,link-to,Ruby On Rails,Ruby On Rails 3,Hyperlink,Download,Link To,我想让访问者选择下载一些pdf。 我试过: <%= link_to "abc", "/data/abc.pdf"%> <%= link_to "abc", "/data/abc.pdf", :format => 'pdf' %> 'pdf'> 和一些变化,但他们似乎不工作。我一直得到没有路线匹配[GET]“/data/abc.pdf” 我把pdf文件放在名为data的文件夹中,位于assets文件夹中。 任何帮助都将不胜感激。Rails 4: 路线: get
<%= link_to "abc", "/data/abc.pdf"%>
<%= link_to "abc", "/data/abc.pdf", :format => 'pdf' %>
'pdf'>
和一些变化,但他们似乎不工作。我一直得到没有路线匹配[GET]“/data/abc.pdf”
我把pdf文件放在名为data的文件夹中,位于assets文件夹中。
任何帮助都将不胜感激。Rails 4: 路线:
get "home/download_pdf"
get "home/download_pdf"
在控制器中(已经有pdf):
在控制器中(需要生成pdf):
你应该选择这个选项
导轨<3
公用文件夹中的文件
这可能是给你的答案:
你应该把你的文件放在公用文件夹里,这就是诀窍
当文件正确放置时,应能正常工作
如果无法将文件移动到公用文件夹,请通知我
通过控制器下载
创建一个带有downlaod操作的控制器,并将其链接到
def download
send_file '/assets/data/abc.pdf', :type=>"application/pdf", :x_sendfile=>true
end
轨道4:
路线:
get "home/download_pdf"
get "home/download_pdf"
在控制器中(已经有pdf):
在控制器中(需要生成pdf):
需要“对虾”
类ClientsController
鉴于:
<%= link_to 'Download PDF', home_download_pdf_url %>
<%= link_to 'Download PDF', home_download_pdf_url %>
您可以这样简单地调用控制器操作
<%= link_to "Download", download_file_path, class: "btn btn-sm btn-default", target: "_blank" %>
如果文件是静态的(意味着它们不会更改),请将它们放在公用文件夹中
然后你可以下载像
<a href="file.pdf" download>PDF</a>
还是再培训局
<%= link_to 'PDF', 'file.pdf', download: '' %>
要为文件提供另一个下载名称,只需将该名称传递给下载选项
<%= link_to 'PDF', 'file.pdf', download: 'data' %>
这将以
data.pdf
的形式下载文件,而不是file.pdf
我很难找到从公共目录自动下载某些文件的简单方法。
最后我提出了这个解决方案。
例如:
我的文件在公共目录中的SVG文件夹中
Public/svg/Test1.xlsx
现在,当我试图访问它加载它,并给予路径与回形针它给问题。
即使我尝试完整路径,它也会给出一个问题,所以我们可以使它成为动态路径。
首先获取主机的路径,以便可以轻松重定向。
现在我们可以访问公用文件夹中的任何文件,如下所示
并通过id和下载选项。
下载选项重命名您要下载的任何文件
<%= link_to 'Database File', "#{url}/svgs/Test1.xlsx", download: 'Data.xlsx',id: "Link_to_Downlaod" %>
现在点击链接已经准备好了,我们可以点击上面的链接下载文件。
使用以下脚本自动下载文件
<script type="text/javascript">
window.onload = document.getElementById('Link_to_Downlaod').click();
</script>
</div>
window.onload=document.getElementById('Link_to_download')。单击();
对于PDF或任何其他文件类型,只需更改文件扩展名。对于我来说,链接到PDF文件的最佳解决方案是通过以下简单步骤: 1-将您的pdf文件添加到公用文件夹中 2-`pdf文件
下面是一段视频,通过详细信息向您展示这个`,这是rails的旧版本。因为Rails3(我认为)公共文件夹是资产。好的,我试过了,它成功了。我非常确定,自rails 3以来,所有资源都应该放在assets文件夹中,但既然它起作用了,现在就可以了。谢谢。很抱歉,没有指定您使用的rails版本检查我刚刚为rails 3所做的新编辑。希望它能帮助你!如果每个人都可以使用这些pdf,则不需要这种方法。使用Rails 3.1 js,css和图像被移动到资产文件夹(因为预编译),但公用文件夹仍然有它的用途,就像这样:)只需使用“主题文本”%>使用路由url的优点是,如果文件是以tempfile内联方式生成的,则不依赖文件的特定文件名/路径,我知道这不是OP的问题,但这是一个更一般化的问题answer@Navi我尝试了你的方法,但我一直得到无路由匹配错误。我的目录是/assets/templates/,当我在控制台中使用Rails.application.config.assets.path时会列出,但不会在我的公用文件夹中列出。你能看到这里的问题吗?你会如何调整多个文件?IE在列表中生成链接的文件文件夹这是一个rails项目,因此您希望使用
link\u to
helper此建议是否会导致对答案的否决投票,或只是说海报来更新他/她的答案?我认为这种态度不适合新手,所以用户喜欢我。只有你想象的态度。只是想帮助新手。这个问题也使用了helper,这是在你的答案中使用它的更好的理由
<%= link_to 'PDF', 'file.pdf', download: 'data' %>
Public/svg/Test1.xlsx
<%= link_to 'Database File', "#{url}/svgs/Test1.xlsx", download: 'Data.xlsx',id: "Link_to_Downlaod" %>
<script type="text/javascript">
window.onload = document.getElementById('Link_to_Downlaod').click();
</script>
</div>