我有一个 submissions
的索引 View ,在 View 中我有 @submissions
Controller 如下所示:
提交 Controller
def index
@submissions = Submission.submissions_for(user: current_user)
end
从 View 中,我实际上想单击一个按钮并传入提交列表
我想过添加一条新路线,如下所示:
<%= link_to "Export", export_submissions_path(submissions: @submissions) %>
但这感觉不太对劲,因为我需要留在索引页上。因此,当用户单击导出
按钮时,他们会停留在index
页面上,但会创建当前数据的 CSV。所以,这个问题是“如何创建 CSV”,更多的是我如何留在索引页面并向服务器发送请求以发送 CSV?
最佳答案
您可以通过单个 Controller 操作提供不同格式的 View 。
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 而不是 View 。
要获取正确的 url,请使用 url_helper,如下所示:
link_to 'CSV Export', submissions_path(format: :csv)
关于ruby-on-rails - Rails 中惯用的 CSV 导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58502741/