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)
我尝试根据 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)