difference between <%= and <%"

10 views
Skip to first unread message

Pepe Sanchez

unread,
Aug 18, 2011, 1:39:40 PM8/18/11
to rubyonra...@googlegroups.com
Hi all

what is the difference between <%= and <% in a view file?


thanks

--
Posted via http://www.ruby-forum.com/.

Tim Shaffer

unread,
Aug 18, 2011, 1:44:54 PM8/18/11
to rubyonra...@googlegroups.com
<%= prints the contents of the tag, whereas <% does not

Stefano

unread,
Aug 18, 2011, 4:47:03 PM8/18/11
to Ruby on Rails: Talk
And you couldnt just try that out yourself? :D

7stud --

unread,
Aug 18, 2011, 6:05:22 PM8/18/11
to rubyonra...@googlegroups.com
Tim Shaffer wrote in post #1017353:

> <%= prints the contents of the tag,

Well, it never meant that. <%= tells ruby to print the result of the
expression between the tags. For instance,

<%= 2+2 %>

would not print '2 + 2', it would print '4'. But even the "result of
the expression" isn't an entirely accurate description--because in rails
3 you write:

<%= form_for(@user) do |f| %>

which doesn't fit that description. In ruby, 'form_for(@user) do |f|'
isn't an expression--it's the first half of a loop/block, so it's an
incomplete expression. In other words, in ruby if you wrote:

result = some_func(arg) do |x|

you would get an error. Maybe its best to think of <%= form_for() as an
exception to the rule?

One example of how <%= and <% differ is this:

<% 3.times do |i| %>
<div>loop: <%= i %></div>
<% end %>

The <% tags just execute the ruby code and don't enter any text onto the
page, which causes ruby/.erb to loop over the <div> tag 3 times. The
<%= tag inside the loop prints the value of the variable i. So you get:

<div>loop: 0</div>
<div>loop: 1</div>
<div>loop: 2</div>

Walter Lee Davis

unread,
Aug 19, 2011, 8:29:55 AM8/19/11
to rubyonra...@googlegroups.com

Here's another way to look at this. '<%=' is a shortcut for '<% puts'.
There's a similar construction in PHP: '<?=' is a shortcut for '<?php
echo (or print)'.

Walter

> --
> Posted via http://www.ruby-forum.com/.
>

> --
> You received this message because you are subscribed to the Google
> Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-
> ta...@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com
> .
> For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
> .
>

Pepe Sanchez

unread,
Aug 19, 2011, 3:42:59 PM8/19/11
to rubyonra...@googlegroups.com
Thank you all for your answers!

Alexey Muranov

unread,
Aug 21, 2011, 3:34:23 AM8/21/11
to rubyonra...@googlegroups.com
Walter Davis wrote in post #1017505:

> Here's another way to look at this. '<%=' is a shortcut for '<% puts'.
> There's a similar construction in PHP: '<?=' is a shortcut for '<?php
> echo (or print)'.
>
> Walter

I do not believe you can use '<% puts' in ERB, i thought you are
supposed to use '<% concat'

Alexey.

Walter Lee Davis

unread,
Aug 23, 2011, 10:46:32 AM8/23/11
to rubyonra...@googlegroups.com

On Aug 21, 2011, at 3:34 AM, Alexey Muranov wrote:

> Walter Davis wrote in post #1017505:
>
>> Here's another way to look at this. '<%=' is a shortcut for '<%
>> puts'.
>> There's a similar construction in PHP: '<?=' is a shortcut for '<?php
>> echo (or print)'.
>>
>> Walter
>
> I do not believe you can use '<% puts' in ERB, i thought you are
> supposed to use '<% concat'

Thanks! I never tried this, actually.

Walter

>
> Alexey.
>
> --
> Posted via http://www.ruby-forum.com/.
>

Reply all
Reply to author
Forward
0 new messages