我在尝试让历史 API 与我的 rails 应用程序中的 ember 一起正常工作时遇到问题。
这一切都与 # URLs 完美配合。
在 Rails 中,我有一个带有索引操作的控制器来呈现我的应用程序。整个页面是 ember 应用程序,所以它只加载 JS、样式表等。
我有两条 Rails 路线...
root 'home#index'
get 'posts', :to => 'home#index'
所以我可以使用 www.example.com 或 www.example.com/posts 渲染我的 rails 应用程序
在 Ember 中,我在路由器中指定了历史 API ......
App.Router.reopen({
rootURL: '/',
location: 'history'
});
然后我有一个单一的 Ember 路线设置......
Delib.Router.map(function() {
this.resource('posts');
});
我有 Index 和 Posts 路由的模板。
当我输入根 URL 时,会显示索引模板。
当我输入帖子网址时,例如 /posts 它仍然呈现索引模板。
我添加了日志信息,它似乎识别了帖子路由,然后转换到索引路由,见下文......
DEBUG: ------------------------------- ember.js?body=1:382
DEBUG: Ember.VERSION : 1.0.0-rc.8 ember.js?body=1:382
DEBUG: Handlebars.VERSION : 1.0.0 ember.js?body=1:382
DEBUG: jQuery.VERSION : 1.10.2 ember.js?body=1:382
DEBUG: ------------------------------- ember.js?body=1:382
generated -> route:posts.index Object {fullName: "route:posts.index"} ember.js?body=1:382
generated -> controller:application Object {fullName: "controller:application"} ember.js?body=1:382
Rendering application with default view <(subclass of Ember.View):ember387> Object {fullName: "view:application"} ember.js?body=1:382
generated -> controller:index Object {fullName: "controller:index"} ember.js?body=1:382
Rendering index with default view <Ember._MetamorphView:ember403> Object {fullName: "view:index"} ember.js?body=1:382
Transitioned into 'index'
我为此收到了一个 HTTP 请求,因此它绝对不是 HTTP 重定向。
有趣的是,它已经在历史 API 中注册了从 /posts 到 / 的移动——所以我的后退按钮被启用,如果我点击返回它正确地转换到 /posts 路由并且我的帖子模板被渲染。同样,当我使用标准的 # URL 时,这一切都有效。
有人知道我做错了什么吗?还是这是某种预期的行为,还是余烬错误?
提前致谢!如果您需要更多信息,请发布。