The next step to refactor Redmine’s ProjectsController is to start converting all of it’s related resources into RESTful controllers.  Looking at config/routes.rb, it looks like FilesController is using three custom routes that hang off of ‘/projects/’ and the #new action is being used for both HTTP GET and HTTP POST. So I’ll use split method to convert #new into two separate actions
Before
| 1 2 3 4 5 6 | class FilesController 'files', :action => 'index', :id => @project return end @versions = @project.versions.sort end end | 
After
| 1 2 3 | class FilesController 'files', :action => 'index', :id => @project end end | 
Now with FilesController following the Rails REST pattern a bit more, I can go back and modify the routes.rb file and move FilesController to be a child resource of projects.