There is often more than one way to do it. Some ways are better than others, and are favored for many reasons. Rails conventions and the way the framework "just works" can be handy in getting your app up and running. Other times Rails puts you in a very difficult spot, and simple, maintainable solutions appear out of reach.
One place where Rails feels very limiting is inside the controller. There is often an evolution in how we deal with these limitations when they arise. Frequently we settle for something that doesn't quite meet our needs. Don't worry! There is hope. We don't need an extra library or another complicated indirection. Using routes to their fullest can give you the power of dependency injection over your controllers.