0

嗨,帮我解决一个简单的问题:

如何发布简单下载:

我的公共/数据我有 some.txt 或 some.pdf 文件(带有一些文本)

我想用户单击某个按钮并开始下载此文件。

我做这样的事情

<%= link_to "Terms" ,:action => :download, :file_name => 'some.txt' %>

def download
    send_file "#{RAILS_ROOT}/public/data/#{params[:file_name]}", :type=>"application/zip"
end 

但是接下来该怎么办?

PS如果你有一些关于这个主题的教程或例子(比如下载文件),我将非常感激

在此处输入图像描述

4

2 回答 2

1

你肯定错过了你的路线routes.rb

resources :posts do
  get :download, :on => :collection

  resource :comments
end

然后你可以有一个链接,如:

<%= link_to "Terms" ,:action => :download, :file_name => 'some.txt' %>

这可能会产生类似的东西:

<a href="/posts/download?file_name=some.txt">Terms</a>

我认为这仍然不是最好的解决方案,但可以解决您的问题。

我建议快速查看 Rails 指南的这一部分以澄清这一点:http: //guides.rubyonrails.org/routing.html#adding-more-restful-actions

完整阅读本指南总是好的,也强烈推荐。

于 2012-09-19T14:15:13.580 回答
0

你到底是什么意思“下一步”?除了 application/zip mime 类型与您的文件(它是 .txt,因此可能是文本/纯文本)不匹配这一事实之外,您编写的内容基本上是正确的。

有两件事要记住,因为您的文件位于公共目录中,您不需要send_file通过控制器严格使用,您可以改为这样写:

<%= link_to "Terms", '/data/some.txt' %>

其次,如果您要使用send_file服务器更大的文件,您可能需要查看 xsendfile 来提高性能。不过,这必须由您的网络服务器支持(例如,使用 mod_sendfile for apache。)

但是所有这些都说您的代码应该按原样工作。

于 2012-09-18T21:48:30.967 回答