0

我在尝试让历史 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 时,这一切都有效。

有人知道我做错了什么吗?还是这是某种预期的行为,还是余烬错误?

提前致谢!如果您需要更多信息,请发布。

4

1 回答 1

0

看来我已经修好了。在构建了一个独立的 ember 应用程序(没有 Rails)以确认 ember 工作正常后,我返回到我的应用程序并且神奇地工作了。

这似乎是由于 Rails 没有重新加载控制器/模型或类似的东西。不幸的是,我现在不能重复这个问题 - 所以我留下这个答案,以防其他人遇到这个问题,他们也许可以添加更多信息,或者至少通过重新启动他们的应用程序来解决它。

于 2013-08-30T08:45:07.690 回答