Rails:基于URL参数导出CSV表

时间:2018-10-22 14:07:08

标签: ruby-on-rails ruby-on-rails-4

我尝试基于Rails 4中URL中的参数导出CSV表。

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

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

控制器:

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

1 个答案:

答案 0 :(得分:2)

在导出链接中,您应该包括日期而不是类,因为如果缺少params[:date],则说明您使用的是当前日期。

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