Class: ActiveAdmin::CSVBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/active_admin/mongoid/csv_builder.rb

Instance Method Summary collapse

Instance Method Details

#build(controller, csv) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/active_admin/mongoid/csv_builder.rb', line 3

def build(controller, csv)
  @collection  = controller.send :find_collection, except: :pagination
  columns      = exec_columns controller.view_context
  options      = ActiveAdmin.application.csv_options.merge self.options
  bom          = options.delete :byte_order_mark
  column_names = options.delete(:column_names) { true }
  csv_options  = options.except :encoding_options, :humanize_name

  csv << bom if bom

  if column_names
    csv << CSV.generate_line(columns.map{ |c| encode c.name, options }, csv_options)
  end

  (1..paginated_collection.total_pages).each do |page|
    paginated_collection(page).each do |resource|
      resource = controller.send :apply_decorator, resource
      csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
    end
  end

  csv
end