In routes.rb:
map.resources :games
I can do something like this:
games_path(:sport => 'hockey')
which results in a path like "/games?sport=hockey". Awesome.
But elsewhere I have a similar situation where I want to do that to a specific game instance:
game_path(@game, :cancelled => 'true'), :method => :put
The idea is that the user clicks a link to cancel the game. I'm using the :put method to invoke the update action, but please note that I'm not just updating an attribute in the model - it's telling the controller what needs to be done (basically call the @game.cancel method, which will run a bunch of business logic).
However, using that syntax doesn't work:
You have a nil object when you didn't expect it! The error occurred while evaluating nil.to_sym
I could put custom actions on the resource, using :member => { :cancelled => :put }, but I might end up with ten different actions, so this doesn't seem like the right approach.
Any ideas?
Thanks! Jeff