Expected kelse

The following piece of code returns:
syntax error, unexpected kELSE, expecting kEND

When I delete this block of code all works well - I have read that
this may be an issue with copied or pasted code, UTF-8 issues etc…

I have tried all of these - is there simply something wrong with my
code that I am not seeing?

<% if c.amount < 500 %>
<% @project.budgmonthexpends.find(:all, :conditions =>
[:year_id == c.year_id]).each do |d| %>
<% else %>
<[email protected](:all, :conditions => :year_id
== c.year_id).each do |d|%>
<% end %>

Thanks,
Erik

On 24 Apr 2008, at 16:20, erik wrote:

       <% @project.budgmonthexpends.find(:all, :conditions =>

[:year_id == c.year_id]).each do |d| %>
<% else %>
<[email protected](:all, :conditions => :year_id
== c.year_id).each do |d|%>
<% end %>

Thanks,
Erik

You never finish (or do anything with) the block from the line above,
you have to end that block with ‘end’ before your ‘else’ statement.

if c.amount < 500
@project.budgmonthexpends.find(:all, :conditions => [:year_id ==
c.year_id]).each do |d|
end
else
@project.budgmonthexpends.find(:all, :conditions => :year_id ==
c.year_id).each do |d|
end
end

Is valid code (though still gibberish since you’re not doing anything
with the two each blocks). Hope that helps.

Alex G.

Department of Biochemistry
University of Cambridge

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

erik wrote:
| The following piece of code returns:
| syntax error, unexpected kELSE, expecting kEND
|
| When I delete this block of code all works well - I have read that
| this may be an issue with copied or pasted code, UTF-8 issues etc…
|
| I have tried all of these - is there simply something wrong with my
| code that I am not seeing?

Removing the ERb cruft:

if c.amount < 500
~ @project.budgmonthexpends.find(:all, :conditions =>
[:year_id == c.year_id]).each do |d|
~ else
~ @project.budgmonthexpends.find(:all, :conditions =>
~ :year_id == c.year_id).each do |d|
~ end

Stuffing an ‘else’ in a block makes Ruby throw an error, obviously.


Phillip G.
Twitter: twitter.com/cynicalryan

~ - You know you’ve been hacking too long when…
…you get snail mail, and you think to your self "You have new mail on
node “your_address” from user “name_on_the_frank”.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkgQqNAACgkQbtAgaoJTgL9qZwCfQEmZTKTuIZLneB3NINWKVXOr
WKQAnj84e3tV9mkGITpgbqY0BTq1OGUk
=jPbH
-----END PGP SIGNATURE-----

if c.amount < 500
~ @project.budgmonthexpends.find(:all, :conditions =>
[:year_id == c.year_id]).each do |d|
~ else
~ @project.budgmonthexpends.find(:all, :conditions =>
~ :year_id == c.year_id).each do |d|
~ end

Stuffing an ‘else’ in a block makes Ruby throw an error, obviously.

Besides that, how is »[:year_id == c.year_id]« or »:year_id ==
c.year_id« supposed to work?

mfg, simon … l

I think your
previous line
<% @project.budgmonthexpends.find(:all, :conditions =>
[:year_id == c.year_id]).each do |d| %>

is missing the block of code to execute… which should end with an
‘end’, but the else is seen prior to the end required to end the block.

RF