Ember Router rootURL选项(未捕获错误:没有路由匹配URL'/ admin')

时间:2013-01-20 20:03:39

标签: 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')

当我去/ admin时,我收到以下错误:

Uncaught Error: No route matched the URL '/admin' 

我刚开始使用emberjs,而我的代码基于this serie

Ember version: v1.0.0-pre.4
Ember-data current api revision:: 11

2 个答案:

答案 0 :(得分:3)

在old-router中,解析路由时会忽略'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');
  }
});

答案 1 :(得分:1)

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

下面是一个显示

的小例子
  • IndexRoute会自动重定向到'/ members'的所有成员的概述。
  • 基于ID的动态路由
  • 序列化/反序列化,以防参数不是“id”而是其他内容。在下面的示例中,它是'refId'(代表参考ID)。

嗯,考试并没有真正展示官方文件。但附加信息总是很好。

所以,希望这会有所帮助。欢呼声。

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 };
  }
});