Rails 4 Ember Routing with History API

时间:2013-08-29 17:09:10

标签: ruby-on-rails ember.js url-routing browser-history rails-routing

我在尝试使用我的rails应用程序中的ember正常运行历史API时遇到问题。

所有与#URN 完美配合。

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

我有索引和帖子路线的模板。

当我输入根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到/在历史API中的移动 - 所以我的后退按钮已启用,如果我单击后退它正确转换到/ posts路线和我的帖子模板被渲染。同样,当我使用标准#URL时,这一切都有效。

任何人都知道我做错了什么?或者这是某种预期的行为还是一个漏洞错误?

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

1 个答案:

答案 0 :(得分:0)

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

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