Sha256: 9c60b4fdd0138dcad6d4fcb5a1c315058a3b24be47df4212403b64f1ef4165bb

Contents?: true

Size: 670 Bytes

Versions: 12

Compression:

Stored size: 670 Bytes

Contents

require "csv"
module RailsPerformance
  module Concerns
    module CsvExportable
      extend ActiveSupport::Concern

      def export_to_csv(filename, data)
        return if data.blank?

        send_data generate_csv(data),
          filename: "#{filename}_#{Time.zone.today}.csv",
          type: "text/csv",
          disposition: "attachment"
      end

      private

      def generate_csv(data)
        CSV.generate(headers: true) do |csv|
          headers = data.first.keys
          csv << headers.map(&:to_s)
          data.each do |entry|
            csv << headers.map { |header| entry[header].to_s }
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rails_performance-1.4.1 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.4.1.alpha1 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.4.0 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.4.0.alpha5 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.4.0.alpha4 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.4.0.alpha3 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.4.0.alpha2 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.4.0.alpha1 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.3.3 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.3.2 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.3.1 app/controllers/rails_performance/concerns/csv_exportable.rb
rails_performance-1.3.0 app/controllers/rails_performance/concerns/csv_exportable.rb