SpringFlowers AutumnMoon
2009-May-24 19:31 UTC
why does this comment create a compile error
there is a line displayed within <pre> <%= 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. -- Posted via http://www.ruby-forum.com/.
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 <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>> > > > there is a line displayed within <pre> > > <%= 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. > -- > 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-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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- l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> there is a line displayed within <pre> > > <%= 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. > -- > Posted viahttp://www.ruby-forum.com/.
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. -- Posted via http://www.ruby-forum.com/.