swaminadhan
Joined: 14 Sep 2009 Posts: 84
|
Posted: Wed Feb 17, 2010 7:15 am Post subject: Difference between %> and -%> tags. |
|
|
Hi friends !
In ruby on rails , the normal content can be passed directly without any changes.However the content between <%= %> is interpreted as the ruby code and gets executed. The result of that execution is converted into string and that value is substituted into the file in place of the <%=...%>.
In editors you can also see something like <% %>(without an equal sign).
The code in between the <% %>(without an equal sign) in .rhtmls is interpreted as a Ruby code that is executed with no substitution back into the output.Interestingly this kind of process can also mixed with non-ruby code.
For example :
<% 3.times do %>
Hello !
<% end %>
Friend !
The above code will generate the following output.
Hello
Hello
Hello
Friend!
Note how the text in the file within the Ruby loop is sent to the output ,
once for each iteration of the loop.
But there will a strange thing is that we will get the blank lines in between each line.They cam from the input file.
If you think about it, the original file contains an end-of-line character (or characters) immediately after the %> of
both the first and third lines of the file. So, the <% 3.times do %> is stripped out of the file, but the newline remains. Each time around the loop, this newline is added to the output file, along with the full text of the Hello line. This accounts for the blank line before each Hello! line in the output. Similarly, the newline after <% end %> accounts for the blank line between the last Hello and the Friend! line.
Normally it doesn't matter a lot in html, because html doesn't much about the white space.
If you want to remove these blank lines,do this by changing the end of the ERB sequence from %> to -%>(with minus sign) .The minus sign tells rails to remove any new line that follows from the output. If we add a minus in the example
<% 3.times d0 -%>
Hello
<% end -%>
Friend!
We will get the output as follows:
Hello
hello
hello
Friend!
Adding a minus on the line containing end, gets rid of the blank line before Friend!.
Thank you,
swaminadhan |
|