Bit*_*ise 2 ruby csv ruby-on-rails
我有一个索引视图,submissions
并且在该视图中@submissions
,控制器看起来像这样:
def index
@submissions = Submission.submissions_for(user: current_user)
end
Run Code Online (Sandbox Code Playgroud)
从视图中,我基本上想单击一个按钮并传递该列表中的 submissions
我曾想过要添加一条新路线,如下所示:
<%= link_to "Export", export_submissions_path(submissions: @submissions) %>
Run Code Online (Sandbox Code Playgroud)
但这感觉不太正确,因为我需要留在索引页面上。因此,当用户单击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
Run Code Online (Sandbox Code Playgroud)
然后,如果您执行请求,.csv
它将交付csv而不是视图。
要获取正确的URL,请使用url_helper,如下所示:
link_to 'CSV Export', submissions_path(format: :csv)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36 次 |
最近记录: |