ruby-on-rails - Rails 中惯用的 CSV 导出
问题描述
我有一个索引视图,submissions
在视图中我@submissions
的控制器看起来像这样:
提交控制器
def index
@submissions = Submission.submissions_for(user: current_user)
end
从视图中,我想基本上单击一个按钮并传入该列表submissions
我想过像这样添加一条新路线:
<%= link_to "Export", export_submissions_path(submissions: @submissions) %>
但这感觉不太对,因为我需要留在索引页面上。因此,当用户单击export
按钮时,他们会留在index
页面上,但会创建当前数据的 CSV。所以,这个问题是“如何创建 CSV”,更多的是我如何留在索引页面上并向服务器发送请求以发送 CSV?
解决方案
您可以通过单个控制器操作提供不同格式的视图。
class SubmissionsController < ApplicationController
def index
@submissions = Submission.submissions_for(user: current_user)
respond_to do |format|
format.html
format.csv { send_data @submissions.to_csv, filename: "users-#{Date.today}.csv" }
end
end
然后,如果您使用它执行请求,.csv
它将提供 csv 而不是视图。
要获得正确的 url,请使用 url_helper,如下所示:
link_to 'CSV Export', submissions_path(format: :csv)
推荐阅读
- r - 多个 gganimate 并排绘制
- java - 无法将 groovy 文件添加到源文件夹
- javascript - 无法创建所需的 UI
- redis - Jackson2HashMapper 不使用 Flatten=True 序列化日期
- python - 我可以逃避这个错误 Traceback(最近一次通话最后一次):文件“
",第 1 行,在 文件 ” ",第 2 行,在 data_entry 中 - python - 如何让这个功能更容易测试?
- php - 提交表单时,会话数据会变得很多
- php - PhpStorm 是否可以根据更改的项目文件夹结构自动更改命名空间和用途?
- javascript - 如何在 javascript 的 addEventListener 函数中添加函数?
- react-native - React Native 中的基本功能