Based on what I said in the comments, this can be done without the need for nested routes using Route#serialize .
I made this script ( here ) with a script similar to what you described:
In the application, I store the arguments of the month and year
window.App = Ember.Application.create({ title: 'Cool App', calendar: { month: new Date().getMonth()+1, year: new Date().getFullYear() } });
Routes defined
App.Router.map(function() { this.route("home"); this.resource('calendar', { path: 'calendar/:year/:month'}); });
In the calendar route, I added a serialize method to translate the properties in obj into the application, then I connected to the third party lib in setupController to get the days property and set its contents.
App.CalendarRoute = Em.Route.extend({ activate: function() { $(document).attr('title','Events') }, serialize: function(obj) { return { year: obj.year, month: obj.month } }, setupController: function(controller, model) { var obj = { days: calendar.getDaysInMonth(model.month, model.year), year: model.year, month: model.month }; controller.set('content', obj); } });
In Handlebars, using the {{linkTo}} I pass the calendar property defined in my App class as an argument:
{{#linkTo calendar App.calendar tagName="li"}} <a {{bindAttr href="view.href"}}> Calendar </a> {{/linkTo}}
This will result in a link to ~/#/calendar/2013/4