Ruby on rails 带有历史API的Rails 4 Ember路由

Ruby on rails 带有历史API的Rails 4 Ember路由,ruby-on-rails,ember.js,url-routing,browser-history,rails-routing,Ruby On Rails,Ember.js,Url Routing,Browser History,Rails Routing,我在rails应用程序中试图使历史API与ember正常工作时遇到问题 所有这些都能与#URL完美配合 在Rails中,我有一个带有索引操作的控制器,用于呈现我的应用程序。整个页面是ember应用程序,所以它只加载JS、样式表等 我有两条铁路路线 root 'home#index' get 'posts', :to => 'home#index' 因此,我可以使用www.example.com或www.example.com/posts呈现我的rails应用程序 在Ember中,我在路由

我在rails应用程序中试图使历史API与ember正常工作时遇到问题

所有这些都能与#URL完美配合

在Rails中,我有一个带有索引操作的控制器,用于呈现我的应用程序。整个页面是ember应用程序,所以它只加载JS、样式表等

我有两条铁路路线

root 'home#index'
get 'posts', :to => 'home#index'
因此,我可以使用www.example.com或www.example.com/posts呈现我的rails应用程序

在Ember中,我在路由器中指定了历史api

App.Router.reopen({
    rootURL: '/',
    location: 'history'
});
然后我有一个单一的余烬路线设置

Delib.Router.map(function() {
    this.resource('posts');
});
我有索引和发布路线的模板

当我输入根URL时,会显示索引模板

当我输入posts url(例如/posts)时,它仍然呈现索引模板。

我添加了日志信息,它似乎可以识别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' 
DEBUG:------------------------------------ember.js?body=1:382
调试:Ember.VERSION:1.0.0-rc.8 Ember.js?body=1:382
调试:handlebar.VERSION:1.0.0 ember.js?body=1:382
调试:jQuery.VERSION:1.10.2 ember.js?body=1:382
调试:-------------------------------------ember.js?body=1:382
已生成->路由:posts.index对象{fullName:“路由:posts.index”}ember.js?body=1:382
已生成->控制器:应用程序对象{fullName:“控制器:应用程序”}ember.js?body=1:382
使用默认视图对象{fullName:“视图:应用程序”}ember.js?body=1:382呈现应用程序
已生成->控制器:索引对象{fullName:“控制器:索引”}ember.js?body=1:382
使用默认视图对象{fullName:“视图:索引”}ember.js?body=1:382呈现索引
转换为“索引”
我只收到一个HTTP请求,因此它肯定不是HTTP重定向

有趣的是,它已经在历史API中注册了从/posts到/的移动,因此启用了我的后退按钮,如果我单击后退,它将正确地转换到/posts路径,并呈现我的posts模板。同样,当我使用标准的#URL时,这一切都会起作用

有人知道我做错了什么吗?或者这是某种预期行为还是余烬bug?


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

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


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

一些额外的信息-我创建了一个非常简单的示例,使用PHP的内置web服务器来处理对任何URL的请求并提供应用程序。在本例中,它的工作原理与预期完全一致——因此,我的更复杂的Ember应用程序中肯定有问题,或者Rails正在以不同的方式进行URL重写/路由。