But what happens when you want to do prettier url ?
Let's assume that your app is user centered. Having all url starting with the user name is by far nicer : /marc/interests is more attractive than /interests/marc. Moreover, it would be very nice to be able to access "home" through /marc and not /marc/home or /home/marc. The intuitive way of doing so is the following:

Note that the order is very important here, as Routes stops at the first route matched.

If you try this code, you'll see that accessing /marc does not display marc's home but the page you would expect to get at /marc/interests/0
Although it should not be this way, the url minimization in routes makes this possible. For further detail, look at Routes' doc. It has to do with minization and implicit values of variables. The only solution is forget minimization and only use explicit routes.

To do so, 2 things must be done:

first of all: not doing things like 'field=None' (ie explicit minimization)

second: disabling implicit routes

The default form for a route is /:controller/:action/:id. You can just do d.connect('/:controller/:action/:id') and Routes will interpret it as using the 'action' method on the specified controller with id as parameter (id = None if not specified). As you can see, there is some implicit minimization here, and letting it available will create issues.

About minimization:
If you want to be sure that no minimization is done, you must disable it (and of course use only explicit routes). You have to upgrade to at least Routes 1.9 to do this (the feature is not present in previous version): easy_install -U routes to upgrade.
Moreover, with minimization disabled, you have to specify routes for each type of URL. You can't do /:user/:field anymore with field default to None. You have to specify /:user and /:user/:field. This way everything is explicit and works fine