I'd get rid of the switch statement and have all of your routes explicitly defined in your routes object -- it's easier to understand and see all routes at a glance.
routes: {
'': 'landingPage',
'home': 'home',
'parents': 'viewParents',
'parents/:id': 'getParents',
...
'*actions': 'defaultAction'
},
In addition to that, your handlers are very simple right now, but can change in the future. Most could just use:
function setView (view, options) {
app.views.resultView.showView(new view(options));
}
With some sort of logged-in validation:
function isLoggedIn() {
return $.get('php/User/check_session.php').then(function (status) {
if (status !== 'yes')
throw new Error('Not logged in');
});
}
Or add the log in verification with view setter:
function setAuthenticatedView (View, options) {
return function () {
isLoggedIn().then(function () {
setView(View, options);
});
}
}
And all together:
permissionsView: setAuthenticatedView(Permissions_view, {}),
parentsView: setAuthenticatedView(Parents_view, {}),
This way you have the ability to extend a route with extra functionality without having a giant switch statement, and for simple routes, you can easily read the source and see that, well, these are authenticated views, and they just set a simple backbone view.