Whats the difference between "<%= abc %>" and "<%= abc -%>"

What difference does the "-" at the end make?

What difference does the "-" at the end make?

-%> eats the newline.

.<%= abc %><%= xyz %>. will turn into


.<%= abc -%><%= xyz -%>. will turn into



Thanks Philip, that makes sense.

According to Agile Development with Rails this is not quite correct. The - is supposed to remove the newline after the -%>
<%= “abc” %><%= “def” %>

<%= “ghi” %><%= “klm” %>

will provide


<%= “abc” %><%= “def” -%>

<%= “ghi” %><%= “klm” %>

will provide


However on testing this in Rails 2.2.2 and viewing the source of the page, I am not seeing this. The - seems to make no difference, I see the two line output in both cases.

Can anyone elucidate?


Ah... the -%> is only "end of line". Didn't realize that.

I just plugged this into 2.2.2:

<%= "abc" %><%= "def" %>
<%= "ghi" %><%= "klm" %>

Chances are your web server supports some sort of output compression,
so all this doesn't really matter much. Surely you don't depend on
newlines to properly display a page, right?

Which is what you should get, I tried exactly the same and got


Is the -%> only used with a <%= ?
Can it be used with, for example <% end -%>

Yes it can, in fact that is possibly the main use as it removes the line completely from the source. Also useful with ‘for’ and so on.