Ruby on Rails/ActionView/ERb

From Wikibooks, open books for an open world
< Ruby on Rails‎ | ActionView
Jump to navigation Jump to search

ERb (Embedded Ruby) is the default template language included with Rails. It is very similar to PHP, JSP and ASP.


Tags for Embedding Ruby[edit]

  • <%= %> will render the result returned from the embedded Ruby expression as text
  • <% %> will execute the embedded expression without rendering the result
  • <% -%> will execute the embedded expression without rendering the result and will suppress trailing whitespace
  • <%- %> will execute the embedded expression without rendering the result and will suppress leading whitespace
  • <%# %> will cause the embedded expression to be parsed as a comment

ERb Utility Methods[edit]

There are a couple utility methods which are part of ERb that you may encounter when developing Rails applications:

  • h(s) or html_escape(s) - A utility method for escaping HTML tag characters in the supplied String s
  • u(s) or url_encode(s) - A utility method for encoding the String s as a URL

Example[edit]


  <h1>People</h1>
    
  <ul>
    <% @people.each do |person| -%>
    <li><%= person.first_name %></li>
    <% end -%>
  </ul>

If @people contained an array of Person instances, this would render something like the following:


  <h1>People</h1>

  <ul>
    <li>Bob</li>
    <li>Joe</li>
    <li>Mary</li>
  </ul>

Tips[edit]

  • While it is possible to put business logic in the view this should be avoided. Business logic belongs in the model where it can be easily tested and reused.
  • The line <%= render :partial => '/layouts/menu' %> will render a the partial app/views/layouts/_menu.