Hey everyone! Is there a way of saying something like this in the routes file (note that map.connect :controller/:action/:id is my last pattern): "If the controller you specified doesn't exist, then go to the next pattern" I want this because if users type in domain.com/noncontrollername, I'd like the app to render or forward the user to domain.com/profiles/noncontrollername. So, for example, if my username is ramon, and I type domain.com/ramon, I will see my profile. If this is not possible, what's a good way of doing this? :) Thanks! Ramon
on 2009-02-26 04:09
on 2009-02-26 10:34
Not sure I understand the behavior you're after completely, but should be able to do this by specifying a named route in your routes file before the default ones. Ex: map.user_profile ':username', :controller => 'users', :action => 'show' map.connect ':controller/:action/:id' ... This will have the effect, however, of matching any incoming request with only one string. So you won't be able to have another route like: map.user_profile ':username', :controller => 'users', :action => 'show' map.group_profile ':groupname', :controller => 'groups', :action => 'show' All requests here meant for either of these would be sent to the UsersController#show because it appears first in the routes file. Hope this answers your question.
on 2009-02-27 02:40
Awesome! That seemed to have worked. If I type in a /username it sends me to my profile, if I type in a controller it still defaults to that controller. Thanks! Ramon Tayag