Forum: Ruby on Rails Whats the difference between "<%= abc %>" and "<%= abc -%>"

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
sultan (Guest)
on 2009-03-18 18:13
(Received via mailing list)
What difference does the "-" at the end make?
Philip H. (Guest)
on 2009-03-18 18:28
(Received via mailing list)
> What difference does the "-" at the end make?

-%> eats the newline.

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

.abc
xyz
.

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

.abcxyz.

-philip
sultan (Guest)
on 2009-03-18 19:27
(Received via mailing list)
Thanks Philip, that makes sense.
Colin L. (Guest)
on 2009-03-18 23:01
(Received via mailing list)
2009/3/18 Philip H. <removed_email_address@domain.invalid>

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

According to Agile Development with Rails this is not quite correct.
The -
is supposed to remove the newline _after_ the -%>
So
<%= "abc" %><%= "def" %>
<%= "ghi" %><%= "klm" %>

will provide

abcdef
ghijkl

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

will provide

abcdefghijkl

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?

Colin
Philip H. (Guest)
on 2009-03-18 23:31
(Received via mailing list)
>> xyz
> So
> <%= "ghi" %><%= "klm" %>
>
> 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" %>

--------

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

And got back this:

abcdef
ghiklm

--------

abcdefghiklm
Greg D. (Guest)
on 2009-03-18 23:31
(Received via mailing list)
On Wed, Mar 18, 2009 at 4:00 PM, Colin L. <removed_email_address@domain.invalid>
wrote:
>> .
>
>
> abcdefghijkl
>
> 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?
>
> Colin


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?



--
Greg D.
http://destiney.com/
Colin L. (Guest)
on 2009-03-18 23:46
(Received via mailing list)
2009/3/18 Philip H. <removed_email_address@domain.invalid>

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

abcdef
ghiklm

--------

abcdef
ghiklm

Which is not correct.   Following a little head scratching I realised
that
that the erb file had windows line endings (\r\n) but I am now working
on
Ubuntu.  I changed the line endings to Unix format and I got
abcdefghiklm in
the second case as expected.

Is this a reportable bug?  should the -%> not remove \r\n if present?
Colin
sultan (Guest)
on 2009-03-19 19:39
(Received via mailing list)
Is the -%> only used with a <%= ?
Can it be used with, for example <% end -%>
Colin L. (Guest)
on 2009-03-19 20:19
(Received via mailing list)
2009/3/19 sultan <removed_email_address@domain.invalid>

>
> 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.
Colin
This topic is locked and can not be replied to.