【发布时间】:2015-07-24 17:50:11
【问题描述】:
我正在尝试将多个文件发送到浏览器。我不能像下面的代码那样为每条记录调用 send_data,因为我得到一个双重渲染错误。根据this post,我需要创建文件并压缩它们,以便我可以在一个请求中发送它们。
@records.each do |r|
ActiveRecord::Base.include_root_in_json = true
@json = r.to_json
a = ActiveSupport::MessageEncryptor.new(Rails.application.config.secret_token)
@json_encrypted = a.encrypt_and_sign(@json)
send_data @json_encrypted, :filename => "#{r.name}.json" }
end
我正在为每条记录创建一个带有 @json_encrypted 和 file_name 的哈希数组。我的问题是如何为每条记录创建一个文件,然后将它们捆绑到一个 zip 文件中,然后将该 zip 文件传递给send_file。或者更好的是在屏幕上弹出多个文件下载对话框。每个文件一个。
file_data = []
@records.each do |r|
ActiveRecord::Base.include_root_in_json = true
@json = r.to_json
a = ActiveSupport::MessageEncryptor.new(Rails.application.config.secret_token)
@json_encrypted = a.encrypt_and_sign(@json)
file_data << { json_encrypted: @json_encrypted, filename: "#{r.name}.json" }
end
【问题讨论】:
-
您可能想要查看 Rubyzip gem (github.com/rubyzip/rubyzip),否则如果您真的想要下载多个单个文件,我认为您可以在打开多个 URL 的页面上使用一些 JS它指向您身边的视图,并带有相应的“强制下载”标题。
-
@evotpid 感谢您的回复!我会调查的
标签: ruby-on-rails ruby zip temporary-files