From 3c53bcb90db7ce5104f2475cdad0897f2fa97055 Mon Sep 17 00:00:00 2001 From: Kamal Fariz Mahyuddin Date: Sat, 23 Mar 2013 21:27:03 -0700 Subject: [PATCH] Avoid parent's implicit index route clobbering child's explicit index. Fixes emberjs/ember.js#2318. --- packages/ember-routing/lib/system/dsl.js | 3 ++- packages/ember/tests/routing/basic_test.js | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/ember-routing/lib/system/dsl.js b/packages/ember-routing/lib/system/dsl.js index 56133b7ccd5..6d9f333fcf7 100644 --- a/packages/ember-routing/lib/system/dsl.js +++ b/packages/ember-routing/lib/system/dsl.js @@ -33,7 +33,8 @@ DSL.prototype = { }, push: function(url, name, callback) { - if (url === "" || url === "/") { this.explicitIndex = true; } + var parts = name.split('.'); + if (url === "" || url === "/" || parts[parts.length-1] === "index") { this.explicitIndex = true; } this.matches.push([url, name, callback]); }, diff --git a/packages/ember/tests/routing/basic_test.js b/packages/ember/tests/routing/basic_test.js index f37976771e9..4510c397626 100644 --- a/packages/ember/tests/routing/basic_test.js +++ b/packages/ember/tests/routing/basic_test.js @@ -1572,3 +1572,25 @@ test("Generated route should be an instance of App.Route if provided", function( ok(generatedRoute instanceof App.Route, 'should extend the correct route'); }); + +test("Nested index route is not overriden by parent's implicit index route", function() { + Router.map(function() { + this.resource('posts', function() { + this.route('index', { path: ':category' } ); + }); + }); + + App.Route = Ember.Route.extend({ + serialize: function(model) { + return { category: model.category }; + } + }); + + bootApplication(); + + Ember.run(function() { + router.transitionTo('posts', { category: 'emberjs' }); + }); + + deepEqual(router.location.path, '/posts/emberjs'); +});