When engineering software, there is a straightforward and somewhat obvious strategy for separating functionality from presentation: put as little code as possible in the templates.
As software frameworks evolve, they start to get more compartmentalized. For example, Ruby on Rails uses the Model-View-Controller paradigm for organizing its resources, but MVC is not the whole story - it includes helpers, too.
Recently, I've wanted to better organize my Rails projects, and here are some thoughts I'd like to share.
A few other notes: