map.resources and custom nested routes

I encountered an error in rails trying to create a nested route in rails 2.x
map.import_time_cards 'users/:user_id/time_cards/import', :controller => 'time_cards', :action => 'import'
Wasn't setting up a route for users because this route was being setup automatically and overwritten by:
map.resources :users, :has_many => [:notes, :addresses, :expenses, :time_cards] , :collection => [:login, :logout, :disable, :enable]
So after digging around on the rails api I discovered that map.resources takes a block so my solution to this problem was :
map.resources(:users, :has_many => [:notes, :addresses, :expenses] , :collection => [:login, :logout, :disable, :enable]) do |user| user.resources :time_cards, :collection => [:import] end
By using a block this tells rails to include route to 'users/1/time_cards/import' instead of appending import as the id for the show route.

Author image

About Scott Davis