there is a line displayed within
<%= h @stories.inspect %>
and the output was too long, so i changed it to
<%= #h @stories.inspect %>
<% @stories.each do |s| %>
<%= h s.inspect %>
<% end %>
(commenting out the first line). now the code will fail to compile…
saying
compile error
/Users/winterheat/ror/shov2/app/views/stories/index.html.erb:13: syntax
error, unexpected kENSURE, expecting ‘)’
/Users/winterheat/ror/shov2/app/views/stories/index.html.erb:15: syntax
error, unexpected kEND, expecting ‘)’
and if i remove that commented line altogether, the code will work. i
thought in some book, it is said that you can comment out some code in
ERB like that?
Update: funny if i change it to
<% #h @stories.inspect %>
then it will compile fine… so the displaying of result tag <%= %>
doesn’t like comments, it seems.
I believe that a comment in erb has to start <%#
Other similar sequences have worked in some versions, or may sometimes
work
but are not guaranteed.
Colin
2009/5/24 SpringFlowers AutumnMoon [email protected]
I’ve run into the same problem several times before and never thought
too much of it, just made the correct change to be able to compile and
kept going. Now that I think about it I might have an answer.
The ruby code is just what it is between <% and %>. Those ‘delimiters’
are just to tell the engine something like ‘ruby code coming’. The =
sign is probably actually a method call equivalent to ‘puts’ (I might
have read that somewhere in the AWDWR book). The rest of the line is
the parameter to the method. By putting the # sign after the = sign we
are actually commenting out the parameter to the method but leaving
the method call in place. The interpreter might not know what to do
with a method call with no parameter (maybe a parameter is mandatory
for the = sign method?) and burps. However if you put the # sign in
front of the method call (the = sign) you are commenting the whole
ruby code, hence the interpreter has no problem with it.
This is just a guess about what might be going on and if anybody knows
the right answer out there I would like to know.
Pepe
On May 24, 3:31 pm, SpringFlowers AutumnMoon <rails-mailing-
pepe wrote:
I’ve run into the same problem several times before and never thought
too much of it, just made the correct change to be able to compile and
kept going. Now that I think about it I might have an answer.
The ruby code is just what it is between <% and %>. Those ‘delimiters’
are just to tell the engine something like ‘ruby code coming’. The =
sign is probably actually a method call equivalent to ‘puts’ (I might
have read that somewhere in the AWDWR book). The rest of the line is
the parameter to the method. By putting the # sign after the = sign we
are actually commenting out the parameter to the method but leaving
the method call in place. The interpreter might not know what to do
with a method call with no parameter (maybe a parameter is mandatory
for the = sign method?) and burps. However if you put the # sign in
front of the method call (the = sign) you are commenting the whole
ruby code, hence the interpreter has no problem with it.
yeah i am suspecting it is either:
<%= whatever %>
changed to <% concat(whatever) %>
or changed to <% output_buffer << whatever %>
so if it is
<%= #comment %>
it becomes
<% concat( #comment ) %>
or
<% output_buffer << #comment %>
the first one fails because it comments out the “)” as well. the second
one fails because it is missing something for the “<<” operator.