Routes.rb

I feel like I’m doing something stupid, because I haven’t been able to
fix this.

I have this in my routes.rb file:

map.resources :networks, :has_many => :nodes
map.resources :auth
map.connect ‘users/login’, :controller => ‘users’, :action =>
‘login’
map.resources :users
map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’

I’m trying to generate an url that goest to localhost:3000/users/
login … but no matter what I do, that url always tries to work
through the “show” action as opposed to the “login” action I have in
the users controller.

What am I doing wrong?

hi justin,
my first guess is that are not reloading the routing table after
making the change. Remember to restart the server for new routes to
take effect. When I check in my code, your route just works fine.

dirk.

Add the line

map.connect ‘users/login’, :controller => ‘users’, :action => ‘login’

after

map.resources :users

in your routes.rb

Why should that work? Routes are consulted in the order they are
defined in routes.rb. So if you have
map.resources :users
before
map.connect ‘/users/login’
it will catch the ‘/users/:id’ declaration of the RESTful resource
routes and always get justin to the show action before it even reaches
the ‘/users/login’ declaration.

dirk.

thats right. the order is from top to bottom. It was my mistake.