Every repository with this icon (
Every repository with this icon (
tree e44a5f2a70ea5ed3385ed471b3b512ea59509a4f
parent 6293eaa2a839b27cc7a511dd3de097bf568849ce
| name | age | message | |
|---|---|---|---|
| |
.gitignore | ||
| |
CHANGELOG | ||
| |
MIT-LICENSE | ||
| |
README.rdoc | ||
| |
init.rb | ||
| |
lib/ | ||
| |
spec/ |
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








