ruby-on-rails - Rails 中惯用的 CSV 导出

标签 ruby-on-rails ruby csv

我有一个 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/

相关文章:

ruby-on-rails - 为 rails 和 rspec 加载中间件的正确方法

javascript - 是否有相当于 ruby​​s "#{}"序列的 JavaScript?

ruby-on-rails - rspec .reload 不重新加载对象

python - Python中的CSV在Windows上添加了一个额外的回车符

ruby-on-rails - 使用 Rspec、Devise 和 Factory Girl 测试用户模型

ruby-on-rails - capybara 请求规范问题与 JS - 找不到模型

ruby-on-rails - ActiveRecord::Relation 如何添加到 Rails 的模型中,为什么每个模型都有单独的 Relation 类?

csv - 如何使用 netlogo 读取 .CSV 文件?

json - 使用jq将JSON {"k1":"v1","k2":"v2"}转换为CSV : v1, v2

ruby-on-rails - 在 url 中有句点 (.) 会抛出 Model.nil 错误