Ruby on rails 在RubyonRails中创建可下载文件

Ruby on rails 在RubyonRails中创建可下载文件,ruby-on-rails,download,Ruby On Rails,Download,浏览网页 localhost:3000/download_me 在控制器foo中调用控制器操作下载 class foo < ApplicationController def download_me # a file is created here i.e. temp.csv in directory C:\ end end class foo

浏览网页

localhost:3000/download_me
在控制器foo中调用控制器操作下载

class foo < ApplicationController
  def download_me
    # a file is created here i.e. temp.csv in directory C:\
  end
end
class foo
控制器应创建一个临时csv文件,然后在访问页面的浏览器中触发下载


我怎样才能做到这一点?

您有什么理由要将临时文件存储在服务器上吗?如果是这样的话,这样的东西应该足够了(使用,您需要安装):

然后吐出csv作为响应:

send_data csv, :type=> 'text/csv'

我最终使用了“发送数据”而不是“发送文件”。我不知道是否有必要,但因为我有一个数据流而不是一个文件,所以我不必处理磁盘I/O等,这可能是最好的方法。修改后的答案供将来参考在大多数情况下,您不需要安装FasterCSV。在ruby 1.9.2中,默认的“CSV”是FasterCSV,在ruby 1.8.7中包括FasterCSV。
csv = FasterCSV.generate do |csv|
send_data csv, :type=> 'text/csv'