Ember.js 余烬路由器根URL选项(未捕获错误:没有与URL匹配的路由';/admin';)

Ember.js 余烬路由器根URL选项(未捕获错误:没有与URL匹配的路由';/admin';),ember.js,ember-router,ember-rails,Ember.js,Ember Router,Ember Rails,我正试图开始构建一个将在/admin/前缀上运行的管理系统 这是我的文件 App.Router.reopen location: 'history' rootURL: '/admin' App.IndexRoute = Ember.Route.extend setupController: (controller, model) -> @controllerFor('application').set('currentRoute', 'home') 当我转到/adm

我正试图开始构建一个将在/admin/前缀上运行的管理系统

这是我的文件

App.Router.reopen
  location: 'history'
  rootURL: '/admin'

App.IndexRoute = Ember.Route.extend
  setupController: (controller, model) ->
    @controllerFor('application').set('currentRoute', 'home')
当我转到/admin时,出现以下错误:

Uncaught Error: No route matched the URL '/admin' 
我只是从emberjs开始,我的代码基于


在谈到emberjs中的路由时,这取决于您使用的是哪个版本。在1.0pre2和1.0pre3之间有一个很大的API变化。www.emberjs.com上的文档已经是新API的最新版本,并且易于理解

下面是一个很小的例子

  • 自动重定向到“/members”处所有成员概览的IndexRoute
  • 基于ID的动态路由
  • 如果参数不是“id”而是其他参数,则序列化/反序列化。在下面的示例中,它是“refId”(表示引用ID)
嗯,examle只显示了官方文件。但是附加信息总是很好的

所以,希望这能有所帮助。干杯

App.Router.map(function() {    
  this.resource("members", { path: '/members' });
  this.resource("member",  { path: "/members/:refId" }, function() {
    this.route("delete");
  });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('members');
  }
});

App.MembersRoute = Ember.Route.extend({
  model: function() {
    return App.Member.findAll();
  }
});

App.MemberRoute = Ember.Route.extend({
  model: function(params) {
    return App.Member.find(params.refId);
  },
  // overwrite default serializer (defaults to 'id', member has 'refId')
  serialize: function(model) {
    return { refId: model.refId };
  }
});

在旧路由器中,解析路由时将忽略“rootURL”属性。在最新版本的ember中,rootURL似乎只在构建链接时使用。不确定这是错误还是疏忽。作为解决方法,请尝试以下方法:

App.Router.map(function() {    
  this.resource("admin",  { path: "/admin" }, function() {
    this.route("other");
  });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('admin');
  }
});

你能再加一点背景吗?例如路由器映射(App.router.map(…))。更好的是,如果您可以提供示例的JSFIDLE/jsbin,这将非常有用。。。路由器部分对我来说是最复杂的。代码现在看起来像这样:。现在的问题是ember没有显示路径的模板(javascripts/admin/templates/*)。。。如果我把我的模板放在(javascripts/templates/*)中就可以了。。。
App.Router.map(function() {    
  this.resource("admin",  { path: "/admin" }, function() {
    this.route("other");
  });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('admin');
  }
});