Alex Rivera | Logout

mysterious ruby syntax error

Asked 2010-12-27T18:22:34.867
13

i'm beyond confused: this is almost a copy/paste out of a RoR action mailer guide, and yet it throws a syntax error:

class Contact < ActionMailer::Base


  def contact a_name, a_company, a_phone, a_email, a_comments
    subject    "Contact request from #{name}"
    recipients "some@address.com"
    from       "some_other@address.com"
    sent_on    Time.now
    body       { :name => a_name, :company => a_company, :phone => a_phone, :email => a_email, :comments => a_comments }
  end

end

the error is:

app/models/contact.rb:9: syntax error, unexpected tASSOC, expecting '}' body { :name => a_name, :company => a_company... ^ app/models/contact.rb:9: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.' ...{ :name => a_name, :company => a_company, :phone => a_phone,... ^ app/models/contact.rb:9: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.' ...ompany => a_company, :phone => a_phone, :email => a_email, :... ^ app/models/contact.rb:9: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.' ..., :phone => a_phone, :email => a_email, :comments => a_comme... ^ app/models/contact.rb:9: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.' ...email => a_email, :comments => a_comments, } ^

any ideas? i can't figure out what i'm doing wrong here.

Edit
Report

1 Answer

29

Add parentheses body({...}) to state explicitly you're doing a method call with hash argument.

Otherwise, {...} is probably confused with function (or lambda, whatever's the official term) being passed in the body method: body { puts "Hello world!" }

answered 2010-12-27T18:25:43.400

Your Answer