Revision 27582273
Added by Tomer Brisker almost 7 years ago
app/controllers/concerns/foreman/controller/csv_responder.rb | ||
---|---|---|
module Foreman::Controller::CsvResponder
|
||
extend ActiveSupport::Concern
|
||
|
||
def csv_response(resources, columns = csv_columns)
|
||
def csv_response(resources, columns = csv_columns, header = nil)
|
||
headers["Cache-Control"] = "no-cache"
|
||
headers["Content-Type"] = "text/csv; charset=utf-8"
|
||
headers["Content-Disposition"] = %(attachment; filename="#{controller_name}-#{Date.today}.csv")
|
||
self.response_body = CsvExporter.export(resources, columns)
|
||
self.response_body = CsvExporter.export(resources, columns, header)
|
||
end
|
||
|
||
private
|
app/services/csv_exporter.rb | ||
---|---|---|
require 'csv'
|
||
|
||
module CsvExporter
|
||
def self.export(resources, columns, header = default_header(columns))
|
||
def self.export(resources, columns, header = nil)
|
||
header ||= default_header(columns)
|
||
raise ArgumentError, "Columns and header row aren't the same length" unless columns.length == header.length
|
||
Enumerator.new do |csv|
|
||
csv << CSV.generate_line(header)
|
Also available in: Unified diff
Refs #19588 - Allow passing header to csv responder