I've noticed that in some lines of rails views, this is used:
<% # Code... -%>
instead of:
<% # Code... %>
What is the difference?
-
<ul> <% @posts.each do |post| -%> <li><%=post.title%></li> <% end -%> </ul>There will be no new lines in between the
<ul>and first<li>and the last closing</li>and</ul>. If the - was omitted, there would.Luke Francl : Yes. <% -%> suppresses new lines. It can be very useful when doing stuff in plain text (like emails) where that matters. -
Consider this
<div> <% if @some_var == some_value %> <p>Some message</p> <% end %> </div>The code above yields to the HTML below if the @some_var is some_value
<div> <p>Some message</p> </div>If you've put - in the closing tag, then the ERB interpreter would remove the new lines for those with code tag including - and result in the following
<div> <p>Some message</p> </div>This is useful if you need to have a good looking code for HTML. Sometimes you'll find it useful when working sideby side with a designer
Hope this helps.
-
The different options for evaluating code in ERB are as follows (they can be accessed in Textmate using Ctrl-Shift-. ):
<% %>Just evaluate the contents.<%= %>Evaluate the contents and puts the result.<%= -%>Evaluate the contents and prints the result.<%# %>The contents is treated as a comment and not outputted.
Notice the difference between
putsandprint. Puts always adds a new line at the end of the string whereas print doesnt.Basically, the
-%>says don't output a new line at the end. -
A little late, but I think it's worth pointing out that you can also do this:
<%- @posts.each do |post| -%> <li><%= post.title %></li> <%- end %>This strips away any whitespace in front.
0 comments:
Post a Comment