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.

index :as => :grid do |product|
  link_to(image_tag(product.image_path), admin_products_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 colums that are rendered using the columns option:

index :as => :grid, :columns => 5 do |product|
  link_to(image_tag(product.image_path), admin_products_path(product))
end

Instance Method Summary collapse

Methods inherited from Component

#default_class_name, #initialize, #tag_name

Constructor Details

This class inherits a constructor from ActiveAdmin::Component

Instance Method Details

#build(page_presenter, collection) ⇒ Object



26
27
28
29
30
# File 'lib/active_admin/views/index_as_grid.rb', line 26

def build(page_presenter, collection)
  @page_presenter = page_presenter
  @collection = collection
  build_table
end

#build_empty_cellObject (protected)



60
61
62
# File 'lib/active_admin/views/index_as_grid.rb', line 60

def build_empty_cell
  td ' '.html_safe
end

#build_item(item) ⇒ Object (protected)



54
55
56
57
58
# File 'lib/active_admin/views/index_as_grid.rb', line 54

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

#build_row(group) ⇒ Object (protected)



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

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

#build_tableObject (protected)



38
39
40
41
42
43
44
# File 'lib/active_admin/views/index_as_grid.rb', line 38

def build_table
  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)



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

def default_number_of_columns
  3
end

#number_of_columnsObject



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

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