Why does this work?

I've been working through the Depot application to get back into Rails
after a few years doing other things. While I was looking at some
functional tests earlier I started thinking about this:

put :update, id: @user.to_param, user: @input_attributes

why doesn't the "id: @..." part throw an exception? id: isn't a
symbol. Is this some sort of alternative method of declaring a hash?
Is it a method call?

It works, which is great, but I'd love to know why.

I've been working through the Depot application to get back into Rails
after a few years doing other things. While I was looking at some
functional tests earlier I started thinking about this:

put :update, id: @user.to_param, user: @input_attributes

why doesn't the "id: @..." part throw an exception? id: isn't a
symbol. Is this some sort of alternative method of declaring a hash?

Correct - ruby 1.9 added a json-ish alternative syntax for hash
literals

Fred

Thanks for that - I won't miss all those hash arrows. I also found
more info here for anyone else who's interested:

http://devlicio.us/blogs/sergio_pereira/archive/2008/12/31/playing-with-ruby-1-9-name-parameters-sort-of.aspx