Difference between -%> and %> in rails [duplicate]
I have started some rails tutorials and noticed that some of the view code blocks are like
<h1><%= @subject.name -%></h1>
and other code blocks are like
<h1><%= @subject.name %></h1>
What is the difference between -%> and %>
If you know of some good syntax references you can point me to, that would also be helpful.
Solution 1:
The extra dash makes ERB not output the newline after the closing tag. There's no difference in your example, but if you have something like this:
<div>
<% if true -%>
Hi
<% end -%>
</div>
It'll produce:
<div>
Hi
</div>
and not this:
<div>
Hi
</div>
Solution 2:
I'm pretty sure -
before %>
is no longer necessary, and should be left out.
At least in Chrome, the generated html looks the same using -%>
or %>
.
Solution 3:
If you use HAML rather than ERB you can do something similar with a less than or greater symbol than after your tag.
>
will remove any whitespace around your tag and <
will remove any whitespace within it.
.float-left<
%p
Lorem ipsum dolor sit amet
is compiled to:
<div class="float-left"><p>
Lorem ipsum dolor sit amet
</p></div>
And…
%left_tag
%inside>
%right_tag
is compiled to:
<left_tag /><inside /><right_tag />
If you're not using HAML it's definitely worth checking out.