public
Description:
Homepage:
Clone URL: git://github.com/nmerouze/action_presenter.git
name age message
file .gitignore Loading commit data...
file CHANGELOG
file MIT-LICENSE
file README.rdoc
file init.rb
directory lib/
directory spec/
README.rdoc

Deprecated

Use ar-presenter instead : github.com/nmerouze/ar-presenter

Action Presenter

Inspired by : www.caboo.se/articles/2007/8/23/simple-presenters

Requirements

  • Rails 2.1 and later.

Install

        ruby script/plugin install git://github.com/nmerouze/action_presenter.git

Usage

Here’s a presenter :

        class ArticlePresenter < ActionPresenter::Base
                def title
                        h @source.title
                end
        end

And to call it in the views, there are present() and p() :

        <%= present(@article).title %> or <%= p(@article).title %>

Instead of a tradionnal loop or iterator, you can use present() :

        <% present(@articles) do |article| %>
                <h2><%= article.title %></h2>
        <% end %>

If you want to use methods from the source record inside the iterator (or somewhere else), you just have to use source() or s() :

        <% present(@articles) do |article| %>
                <h2><%= h source(article).title %></h2>
        <% end %>

Render files

You can also render files for a presenter method :

        class ArticlePresenter < ActionPresenter::Base
                def title
                        render :title
                end

                def body
                        render :body, :msg => 'Hello World!'
                end
        end

The partial for title will be located in app/presenters/article/title.html.erb :

        <%=h article.title %>

The partial for body will be located in app/presenters/article/body.html.erb :

        <%= article.body + msg %>

Presenters in your plugins

You can have presenters in plugins, but you must have Engines installed. Just create a directory app/presenters and you’re ready to go.

Contact

nicolas.merouze (at) gmail (dot) com