无法使用send_data函数下载文件

时间:2019-07-16 10:02:09

标签: ruby-on-rails ruby-on-rails-5

我需要将生成的XML文件下载到本地计算机。我将文件压缩为.zip文件,然后使用send_data函数下载它。我正在获取状态: Sent data xml_idocs.zip (7.6ms) Completed 200 OK in 61ms (Views: 7.4ms | ActiveRecord: 4.6ms)。问题在于该文件未下载。我在使用Opera和Chrome浏览器的开发和生产环境中进行了尝试。我该如何解决?

代码:

filename = 'xml_idocs.zip'
zip_filestream = Zip::OutputStream.write_buffer do |zos|
  zos.put_next_entry 'MATMAS05.xml'
  zos.print builder.to_xml
  zos.put_next_entry 'MATQM01.xml'
  zos.print builder1.to_xml
end
zip_filestream.rewind
send_data zip_filestream.read, :filename => filename, :type => 'application/zip', :disposition => 'attachment'

2 个答案:

答案 0 :(得分:0)

好的,我自己发现了问题。在提交form_with时调用了该函数。我将其更改为form_tag,文件下载正常进行。我没有研究过为什么form_with无法正常工作,因此,如果有人知道背景,我将很感谢您的解释。

答案 1 :(得分:0)

感谢分享您的解决方案。

我在接受 CSV 并输出 CSV 但没有模型关系的表单上遇到了同样的问题。这一定会在未来得到解决(另见:Rails 5: form_for vs form_with

这是我的代码的样子:

                    <%= form_tag shipping_data_csv_path, multipart: true do %>
                        データCSV: <%= file_field_tag :csv %><br><br>
                        <%= submit_tag "データCSVを作成", class: 'btn btn-primary m-auto' %>
                    <% end %>