What is the role of the controllers? (Advanced question)

Ben Johnson wrote:

I have noticed a lot of people making a controller for each model. The point of this is to keep all controller code related to that model in that controller. This allows me to set up routes as follows:

This basic assumption is where you go wrong IMHO. There is no rule saying anything about the relationship between models and controllers. Actually one point of having models and controllers separated is that the model should be easily accessible from more than one location. Stop worrying about it and use your models where you need them.

Does a controller represent a set of methods that perform actions on a similar piece of data (ex: a user object)? Or does a controller represent a set of methods that help prepare data for views that are related (as in my example above, you could actually be registering a user in more than one controller)?

You can create controllers for manipulating similar data or for related views. Do whatever feels most natural and pain free.

On a related note, check out some of the blogposts on skinny controller and fat models floating around the blogosphere, they might give you a solid perspective on things.