我需要将生成的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'
答案 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 %>