Sha256: 6c9450907f33b0b7ca9ee9e15b7bc67068c687f1d77bdd437f3fb5606281c10e

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

# Artdeco

[![Build History][2]][1]

[1]: http://travis-ci.org/tracksun/artdeco
[2]: https://secure.travis-ci.org/tracksun/artdeco.png?branch=master

Decorators for Rails 

* extend an object with given classes (default is \<object.class\>Decorator, if defined)
* make helpers accessible in object via :h

### Example

Decorate a model in your controller:

    def show
      article = Article.find(params[:id])
      @article = Artdeco.decorate(article, self)
    end
 
    def index
      articles = Article.all
      @articles = Artdeco.decorate(articles, self)
    end

Then @article will be extended by module ArticleDecorator
and has access to your helpers via :h

    module ArticleDecorator
      def image
        h.image_tag('article')
      end
    end

and your views may use the decorated model: 

    # app/views/articles/show.html.haml
    %h1 
      Article
      = @article.image


Modules for decoration may be given explicitly:

    Artdeco.decorate(user, self, decorator: Customer)

    # or

    Artdeco.decorate(user, self, decorator: [ Customer, Admin ] )

Also works for enumerations (anything which responds to :map):
    @articles = Article.all
    Artdeco.decorate(@articles, self)

For conveniance decorated objects may decorate other objects:

    Artdeco.decorate(order, self)

    order.decorate(shopping_card)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
artdeco-1.2.0 README.md