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.