Skip to content

Commit

Permalink
Add README
Browse files Browse the repository at this point in the history
  • Loading branch information
Joe Fiorini committed Jan 18, 2010
1 parent a533a6f commit f879795
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 17 deletions.
17 changes: 0 additions & 17 deletions README.rdoc

This file was deleted.

79 changes: 79 additions & 0 deletions README.textile
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
h1. Totally Tabular!

Assuming I have 5 people with:

* first_name
* last_name
* registration_status

My pointy-haired boss wants to see a list of these people on our
administrative dashboard. Sure, I could write some ugly ERB like so:

<pre>
<code>
<table class="people">
<thead>
<tr>
<th class="header">First Name</th>
<th>Last Name</th>
<th>Registration Status</th>
</tr>
</thead>
<tbody>
<% @people.each do |person| %>
<tr class="<%= person.registration_status %>">
<td>Michael Bluth</td>
<td>Bluth</td>
<td>
<% if person.registered? %>
<strong>Registered</strong>
<% else %>
<em>Unregistered</em>
<% end %>
</tr>
<% end %>
</tbody>
</table>
</code>
</pre>

But why? I mean, we're using Ruby for Pete's sake! How about a cleaner way to do the same thing?

<pre>
<code>
<%= person_table(people_presenter.people, :class => 'people') %>
</code>
</pre>

Okay, so that's just a custom Rails helper method. Nothing special. But let's look at the definition of the helper method! That's where the special sauce is.

<pre>
<code>
def person_table(people, attributes={})
TableView.new(@people, :class => 'people') do
define_column("First Name") do |person|
header_attributes!(:class => 'header')
row_attributes!(:class => person.registration_status)
template! do
person.first_name
end
end
define_column("Last Name") do |person|
template! do
person.last_name
end
end
define_column("Registration Status") do |person|
template! do
if person.registered?
content_tag(:strong, "Registered")
else
content_tag(:em, "Unregistered")
end
end
end
end
end
</code>
</pre>

0 comments on commit f879795

Please sign in to comment.