Class: ActiveAdmin::Views::IndexAsGrid

Inherits:
Component
  • Object
show all
Defined in:
lib/active_admin/views/index_as_grid.rb

Overview

# Index as a Grid

Sometimes you want to display the index screen for a set of resources as a grid (possibly a grid of thumbnail images). To do so, use the :grid option for the index block.

“‘ruby index as: :grid do |product|

link_to image_tag(product.image_path), admin_product_path(product)

end “‘

The block is rendered within a cell in the grid once for each resource in the collection. The resource is passed into the block for you to use in the view.

You can customize the number of columns that are rendered using the columns option:

“‘ruby index as: :grid, columns: 5 do |product|

link_to image_tag(product.image_path), admin_product_path(product)

end “‘

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.index_nameObject

[View source]

41
42
43
# File 'lib/active_admin/views/index_as_grid.rb', line 41

def self.index_name
  "grid"
end

Instance Method Details

#build(page_presenter, collection) ⇒ Object

[View source]

30
31
32
33
34
35
# File 'lib/active_admin/views/index_as_grid.rb', line 30

def build(page_presenter, collection)
  @page_presenter = page_presenter
  @collection = collection.to_a
  add_class "index"
  build_table
end

#build_empty_cellObject (protected)

[View source]

70
71
72
# File 'lib/active_admin/views/index_as_grid.rb', line 70

def build_empty_cell
  td ' '.html_safe
end

#build_item(item) ⇒ Object (protected)

[View source]

64
65
66
67
68
# File 'lib/active_admin/views/index_as_grid.rb', line 64

def build_item(item)
  td for: item do
    instance_exec(item, &@page_presenter.block)
  end
end

#build_row(group) ⇒ Object (protected)

[View source]

56
57
58
59
60
61
62
# File 'lib/active_admin/views/index_as_grid.rb', line 56

def build_row(group)
  tr do
    group.each do |item|
      item ? build_item(item) : build_empty_cell
    end
  end
end

#build_tableObject (protected)

[View source]

47
48
49
50
51
52
53
54
# File 'lib/active_admin/views/index_as_grid.rb', line 47

def build_table
  resource_selection_toggle_panel if active_admin_config.batch_actions.any?
  table class: "index_grid" do
    @collection.in_groups_of(number_of_columns).each do |group|
      build_row(group)
    end
  end
end

#default_number_of_columnsObject (protected)

[View source]

74
75
76
# File 'lib/active_admin/views/index_as_grid.rb', line 74

def default_number_of_columns
  3
end

#number_of_columnsObject

[View source]

37
38
39
# File 'lib/active_admin/views/index_as_grid.rb', line 37

def number_of_columns
  @page_presenter[:columns] || default_number_of_columns
end