Class: ActiveAdmin::Views::IndexAsBlog

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

Overview

# Index as Blog

Render your index page as a set of posts. The post has two main options: title and body.

“`ruby index as: :blog do

title :my_title # Calls #my_title on each resource
body  :my_body  # Calls #my_body on each resource

end “`

## Post Title

The title is the content that will be rendered within a link to the resource. There are two main ways to set the content for the title

First, you can pass in a method to be called on your resource. For example:

“`ruby index as: :blog do

title :a_method_to_call

end “`

Second, you can pass a block to the tile option which will then be used as the contents fo the title. The resource being rendered is passed in to the block. For Example:

“`ruby index as: :blog do

title do |post|
  span post.title,      class: 'title'
  span post.created_at, class: 'created_at'
end

end “`

## Post Body

The body is rendered underneath the title of each post. The same two style of options work as the Post Title above.

Call a method on the resource as the body:

“`ruby index as: :blog do

title :my_title
body :my_body

end “`

Or, render a block as the body:

“`ruby index as: :blog do

title :my_title
body do |post|
  div truncate post.title
  div class: 'meta' do
    span "Post in #{post.categories.join(', ')}"
  end
end

end “`

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.index_nameObject


102
103
104
# File 'lib/active_admin/views/index_as_blog.rb', line 102

def self.index_name
  "blog"
end

Instance Method Details

#body(method = nil, &block) ⇒ Object

Setter method for the configuration of the body


95
96
97
98
99
100
# File 'lib/active_admin/views/index_as_blog.rb', line 95

def body(method = nil, &block)
  if block_given? || method
    @body = block_given? ? block : method
  end
  @body
end

#build(page_presenter, collection) ⇒ Object


72
73
74
75
76
77
78
79
80
81
82
# File 'lib/active_admin/views/index_as_blog.rb', line 72

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

  # Call the block passed in. This will set the
  # title and body methods
  instance_exec &page_presenter.block if page_presenter.block

  add_class "index"
  build_posts
end

#title(method = nil, &block) ⇒ Object

Setter method for the configuration of the title


85
86
87
88
89
90
# File 'lib/active_admin/views/index_as_blog.rb', line 85

def title(method = nil, &block)
  if block_given? || method
    @title = block_given? ? block : method
  end
  @title
end