Sha256: 452dd846cc48ffa42cc7093c50b588e964085ac6d25a47da1bf31499509ee64e

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

---
layout: default
nav_order: 11
title: Decorators
redirect_from: /docs/11-decorators.html
---

# Decorators

Active Admin allows you to use the decorator pattern to provide view-specific
versions of a resource. [Draper](https://github.com/drapergem/draper) is
recommended but not required.

To use decorator support without Draper, your decorator must support a variety
of collection methods to support pagination, filtering, etc. See
[this github issue discussion](https://github.com/activeadmin/activeadmin/issues/3600)
and [this gem](https://github.com/kiote/activeadmin-poro-decorator) for more details.

## Example usage

```ruby
# app/models/post.rb
class Post < ActiveRecord::Base
  # has title, content, and image_url
end

# app/decorators/post_decorator.rb
class PostDecorator < Draper::Decorator
  delegate_all

  def image
    h.image_tag model.image_url
  end
end

# app/admin/post.rb
ActiveAdmin.configure_resource Post do |config|
  config.decorator_class_name = "PostDecorator"
end

# /app/views/admin/posts/_index_as_table.html.arb
index_table_for(collection, default_table_options) do |t|
  column :title
  column :image
  actions
end
```

## Forms

By default, ActiveAdmin does *not* decorate the resource used to render forms.
If you need ActiveAdmin to decorate the forms, you can pass `decorate: true` to the
form page presenter.

```ruby
ActiveAdmin.configure_resource Post do |config|
  config.decorator_class_name = "PostDecorator"

  config.set_page_options :form, decorate: true
end

# app/views/admin/posts/_form.html.arb
active_admin_form_for(resource) do |f|
  # ...
end
```

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activeadmin-rails-1.7.2 docs/11-decorators.md
activeadmin-rails-1.7.1 docs/11-decorators.md
activeadmin-rails-1.7.0 docs/11-decorators.md