To stream a CSV file in a controller action:
headers['Content-Type'] = 'text/plain'
headers['Content-disposition'] = "attachment; filename=\"#{filename}\";"
headers['Last-Modified'] = Time.zone.now.httpdate
headers['X-Accel-Buffering'] = 'no'
headers['Cache-Control'] = 'no-cache'
headers.delete('Content-Length')
self.response_body = Enumerator.new do |csv|
csv << "Name;Age\r\n"
cats.each do |cat|
csv << "#{cat.name};#{cat.age}\r\n"
end
end
self.response_body
must respond to each
.