Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails中的文件下载链接_Ruby On Rails_Ruby On Rails 3_Hyperlink_Download_Link To - Fatal编程技术网

Ruby on rails rails中的文件下载链接

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

我想让访问者选择下载一些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 "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>