Sha256: fa6c6f1b187b009fd7448f7c4972dd03670651c814f15369868eb226a1aebdb6
Contents?: true
Size: 1.75 KB
Versions: 7
Compression:
Stored size: 1.75 KB
Contents
module ActiveAdmin module Views # = 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 # class IndexAsGrid < ActiveAdmin::Component def build(page_config, collection) @page_config = page_config @collection = collection build_table end def number_of_columns @page_config[:columns] || default_number_of_columns end protected def build_table table :class => "index_grid" do collection.in_groups_of(number_of_columns).each do |group| build_row(group) end end end def build_row(group) tr do group.each do |item| item ? build_item(item) : build_empty_cell end end end def build_item(item) td :for => item do instance_exec(item, &@page_config.block) end end def build_empty_cell td ' '.html_safe end def default_number_of_columns 3 end end end end
Version data entries
7 entries across 7 versions & 3 rubygems