Rails 6:CSV 在响应负载中返回但未下载
Rails 6: CSV is returned at the response payload but not downloaded
我有一个视图允许用户select将一组记录导出到 CSV 文件中。
在用户 select 一组记录并提交包含信息的表单后,CSV 正确生成并返回,但没有询问用户将文件保存在哪里,没有任何反应。在浏览器上检查请求后,我发现数据以原始 CSV 格式存在于响应负载中。如何让浏览器显示保存对话框?
视图有一个包含记录列表的表单,每条记录都可以select编辑(带有复选框)以导出。
<%= form_with url: export_to_csv_admin_properties_url, multipart: true do |form| %>
<table class="table is-striped">
<thead>
<tr>
<th><%= sortable "id" %></th>
<th><%= sortable "city" %></th>
<th>To export</th>
</tr>
</thead>
<tbody>
<% @properties.each do |property| %>
<tr>
<td><%= property.id %></td>
<td> <%= property.city %> </td>
<td><%= check_box("export", property.id) %></td>
</tr>
<% end %>
</tbody>
</table>
<%= form.submit "Export" %>
<% end %>
控制器正确接收数据并调用class负责构建CSV字符串:
def export_to_csv
ids_to_export = params[:export].select { |_key, value| value == '1' }.keys
properties = Property.find(ids_to_export)
csv_data = CsvService.export_properties(properties)
send_data csv_data, filename: "exported_properties.csv", type: 'text/csv'
end
在视图中的from_with
方法中添加local: true
即可解决问题。
<%= form_with url: export_to_csv_admin_properties_url, local: true do |form| %>
我有一个视图允许用户select将一组记录导出到 CSV 文件中。
在用户 select 一组记录并提交包含信息的表单后,CSV 正确生成并返回,但没有询问用户将文件保存在哪里,没有任何反应。在浏览器上检查请求后,我发现数据以原始 CSV 格式存在于响应负载中。如何让浏览器显示保存对话框?
视图有一个包含记录列表的表单,每条记录都可以select编辑(带有复选框)以导出。
<%= form_with url: export_to_csv_admin_properties_url, multipart: true do |form| %>
<table class="table is-striped">
<thead>
<tr>
<th><%= sortable "id" %></th>
<th><%= sortable "city" %></th>
<th>To export</th>
</tr>
</thead>
<tbody>
<% @properties.each do |property| %>
<tr>
<td><%= property.id %></td>
<td> <%= property.city %> </td>
<td><%= check_box("export", property.id) %></td>
</tr>
<% end %>
</tbody>
</table>
<%= form.submit "Export" %>
<% end %>
控制器正确接收数据并调用class负责构建CSV字符串:
def export_to_csv
ids_to_export = params[:export].select { |_key, value| value == '1' }.keys
properties = Property.find(ids_to_export)
csv_data = CsvService.export_properties(properties)
send_data csv_data, filename: "exported_properties.csv", type: 'text/csv'
end
在视图中的from_with
方法中添加local: true
即可解决问题。
<%= form_with url: export_to_csv_admin_properties_url, local: true do |form| %>