Adding Logic to the View
You can also put more sophisticated logic into the views, thanks to the <%
and %>
tags. (The opening tag lacks
the =
sign.) These tags let you put Ruby code directly
into your ERb files. Weâll start with a very simple example, shown in Example 2-9, that takes advantage of the count
variable in the controller. (This example is part of the
ch02/hello003 code sample.)
Example 2-9. Modifying index.html.erb to present the @bonus message as many times as @count specifies
<html> <head><title><%=h @message %> </title></head> <body> <h1><%=h @message %></h1> <p>This is a greeting from app/views/hello/index.html.erb</p><% for i in 1..@count %>
<p><%=h @bonus %></p><% end %>
</body> </html>
The count
variable now controls the number of times the bonus message appears because of the
for...end
loop, which will simply count from 1 to the
value of the count
variable.
Note
The for
loop is familiar to developers from a wide variety of programming languages, but
itâs not especially idiomatic Ruby. Ruby developers would likely use a times
construct instead, such as:
<% @count.times do %> <p><%=h @bonus %></p> <% end %>
Depending on your fondness for punctuation, you can also replace the do
and end
with curly
braces, as in:
<% @count.times { %> <p><%=h @bonus %></p> <% } %>
As always, you can choose the approach you find most comfortable.
The loop will run three times, counting up to the value the controller set for the
count
variable. As a result, âThis message came from ...
Get Learning Rails: Live Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.