2013-11-21 100 views
0

我创建了我的第一个Ember应用程序,并且有一个路由问题。我有一个模板,显示这种类型的路线模型:Ember路由器问题

this.resource('collection', {path: '/collection/:collection_id'}); 

当网址中有一个id时,页面重新加载。但我有一个情况下基于用户互动时collection_id不再可用,则网址如下:

http://localhost:8080/discover/index.html#/collection/ 

但是,如果我重新加载这个页面,我得到一个错误:

'Assertion failed: The URL '/collection/' did not match any routes in your application' 

我会想解决这个问题,我想如果我能捕捉到这种状态,并为它做这样的事情:

this.transitionTo('home'); 

这将使意义上我的应用程序。问题是我该如何做到这一点。如果有人有一个想法如何做到这一点,你的帮助是非常感谢。

我的路由器是这样的:

App.Router.map(function(){ 
     this.resource('home', {path: '/'}); 
     this.resource('admin', function(){ 
      this.route('user'); 
      this.route('storage'); 
     }); 
     this.resource('help'); 
     this.resource('collection', {path: '/collection/:collection_id'}); 
}); 

回答

0

'Assertion failed: The URL '/collection/' did not match any routes in your application'

出现,我想是因为实际上没有指定这个确切路线路由器。

迈克尔Johnston`s例如添加了一个应该工作,如果你巢路线,像这样:

App.Router.map(function() { 
    this.resource('collection', function() { 
     this.route('show', { path: ':collection_id' }); 
    }); 
}); 

该航线将是

App.CollectionIndexRoute = Ember.Route.extend({}); 

App.CollectionShowRoute = Ember.Route.extend({ 
    model: function(params) { 
     // do the i/o for the collection here 
    } 
}); 
+0

所以只有这个“this.resource('collection',{path:'/ collection /:collection_id'});”会导致这个问题? – user2917629

+0

Ember只是不知道如何处理URL'/ collection',因为您只为URL'/ collection /:collection_id'创建了一个。你可以添加'this.resource('collectionRoot',{path:'/ collection'});'并创建一个对应的App.CollectionRootRoute来处理它(命名CollectionRoot是完全任意的)。 – Poindexter

+0

太棒了!这工作就像一个魅力 - 谢谢,谢谢,谢谢! – user2917629

0

威力工作,我没能在的jsfiddle快速测试,因为你不能直接设置锚:

App.CollectionIndexRoute = Ember.Route.extend({ 
    redirect: function(){ 
    this.transitionTo('home');   
    } 
}); 
+0

谢谢你,但与添加的任何更改以上。 – user2917629

0

提取您的问题:

But I have a situation based on user interaction when collection_id is no longer available and the url becomes as follows:

上面的答案(迈克尔约翰斯顿)应该解决你的问题,但我的问题是为什么(或何时)collection_id变得不再可用?这collection_id变得不可用听起来像问题本身的事实...

请告诉我更多...

+0

我有一个输入框。当用户输入到框中时,响应可能带有collection_id对象的详细信息,但也可能与用户输入有关,而与collection_id无关 - 这是在页面重新加载时发生错误的时候。 – user2917629