Friday, February 25, 2005

Rails for Strut-ters: Dealing with the view

Posted by admin

Brian McCallister is doing an excellent job showing Strut-ters how Rails work by comparing it to their own environment. In this round, he’s taking a look at the oh-horror that is unleashing a real programming language on view logic. He finds that perhaps it’s not so bad at all comparing:

<% for invite in @invitations %>
  ...
<% end %>

…from Rails to the JSP approach of tag libraries with:

<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
...
<logic:iterate name="invite" property="invitation">
  ...
</logic:iterate>

Indeed they do look similar. For more on that discussion, read my views on template languages and why the scriplet approach works in Rails.

As a sidenote, I’d like to suggest a few improvements to the tag/value mix that Brian has in his examples. For example, we could convert:

&lt;form action="<%= url_for :action => 'register', :controller => 'rsvp' %>">  
...
   &lt;input type="text" 
          name="invite_names[&lt;%= slot %>]" 
          length="30"&lt;%= "value='#{@invite.split_names[slot]}'" %>/>
...

To use a few more succinct FormTagHelper helper methods:

&lt;%= form_tag :action => 'register', :controller => 'rsvp' %>
...
&lt;%= text_field_tag "invite_names[#{slot}]", @invite.split_names[slot] %>

But that’s nitpicking. Brian is doing a fabulous job expressing the unknown in familiar terms. If you’re in need for something more visual on the Helpers, see this video demonstrating how to create a helper method in Rails.