Module: ActiveAdmin::Axlsx::ResourceControllerExtension

Defined in:
lib/active_admin/axlsx/resource_controller_extension.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
# File 'lib/active_admin/axlsx/resource_controller_extension.rb', line 4

def self.included(base)
  base.send :alias_method_chain, :per_page, :xlsx
  base.send :alias_method_chain, :index, :xlsx
  base.send :respond_to, :xlsx
end

Instance Method Details

#index_with_xlsx(options = {}, &block) ⇒ Object

patching the index method to allow the xlsx format.



11
12
13
14
15
16
17
18
# File 'lib/active_admin/axlsx/resource_controller_extension.rb', line 11

def index_with_xlsx(options={}, &block)
  index_without_xlsx(options) do |format|
     format.xlsx do
      xlsx = active_admin_config.xlsx_builder.serialize(collection)
      send_data xlsx, :filename => "#{xlsx_filename}", :type => Mime::Type.lookup_by_extension(:xlsx)
    end
  end
end

#per_page_with_xlsxObject

patching per_page to use the CSV record max for pagination when the format is xlsx



21
22
23
24
25
26
# File 'lib/active_admin/axlsx/resource_controller_extension.rb', line 21

def per_page_with_xlsx
    if request.format ==  Mime::Type.lookup_by_extension(:xlsx)
      return max_csv_records
    end
    per_page_without_xlsx
end

#xlsx_filenameObject

Returns a filename for the xlsx file using the collection_name and current date such as ‘my-articles-2011-06-24.xlsx’.



30
31
32
# File 'lib/active_admin/axlsx/resource_controller_extension.rb', line 30

def xlsx_filename
  "#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.now.strftime("%Y-%m-%d")}.xlsx"
end