Rails:根据URL参数导出CSV table

Rails: Export CSV table based on URL parameters

我尝试根据 Rails 中 URL 中的参数导出 CSV table 4.

URL 参数看起来像这样 "classes?date=2018-08-01" 并且根据 URL 日期,视图会更改显示 table 给定月份的数据。我想导出这些数据。但是,“导出”按钮始终只下载当月的数据。我做错了什么?

我添加了一个简化的代码,而不是精确的副本。因此,如果您需要从代码中看到更多内容,请发表评论。

控制器:

def index
    @date = if params[:date].present?
            Time.zone.parse(params[:date])
            else
            Time.zone.now

    @classes = Class.includes(:teacher).on_month(@date.to_date)

    respond_to do |format|
        format.html
        format.csv { send_data @classes.to_csv }
    end
end

查看:

= link_to 'Export', classes_path(@classes, format: :csv)

型号:

def self.to_csv
    column_names = %w{ Teacher Class }

    CSV.generate(headers: true) do |csv|
        csv << column_names

        all.each do |class|
            csv << [class.teacher.name, class.class_name]
        end
    end
end

在您要导出的 link 中,您应该包含日期而不是 类,因为在您的控制器中,如果缺少 params[:date],那么您使用的是当前日期。

= link_to 'Export', classes_path(date: @date, format: :csv)