Ruby on rails 3 灰烬路线和铁路路线

Ruby on rails 3 灰烬路线和铁路路线,ruby-on-rails-3,ember.js,ember-router,ember-rails,Ruby On Rails 3,Ember.js,Ember Router,Ember Rails,自从我开始研究Ember以了解它如何与Rails一起工作以来,我一直在思考这个问题 Rails有一个routes.rb文件,其中包含任意数量的现有路由。 余烬有自己的一套单独的路线 当轨道中不存在余烬路线时,浏览器如何知道如何查找该路线 rails需要将浏览器重定向到Ember,这似乎是合乎逻辑的,但我在任何地方都没有看到这样的描述 在大多数已有rails应用程序的情况下,routes.rb中的route起着将资源转换为api的作用,并通过url提供数据 那部分很简单。我可以使用url.json

自从我开始研究Ember以了解它如何与Rails一起工作以来,我一直在思考这个问题

Rails有一个routes.rb文件,其中包含任意数量的现有路由。 余烬有自己的一套单独的路线

当轨道中不存在余烬路线时,浏览器如何知道如何查找该路线

rails需要将浏览器重定向到Ember,这似乎是合乎逻辑的,但我在任何地方都没有看到这样的描述

在大多数已有rails应用程序的情况下,routes.rb中的route起着将资源转换为api的作用,并通过url提供数据

那部分很简单。我可以使用url.json查看数据

我现在正试图让浏览器通过Ember路由识别一条单一的路由(rails中的许多现有路由)

这与显示数据无关。我只想看到模板渲染。

我觉得,根据Ember框架中幕后发生的事情,浏览器可以神奇地识别路线(在routes.rb中没有提到Ember routing),但这并不是我在现实中所经历的

我不断遇到路由错误:

2013-08-08 12:44:30-0700开始获取127.0.0.1的“/newslinks”
ActionController::RoutingError(没有与[GET]“/newslinks]匹配的路由):

这是我的application.js

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require jquery-fileupload/basic
//= require jquery-fileupload/vendor/tmpl
//= require chosen-jquery
//= require bootstrap
//= require bootstrap-notify
//= require jquery.limit-1.2.source
//= require bootstrap-switch
//= require handlebars
//= require ember
//= require ember-data
//= require_self
//= require app
这是我的app.js:

App = Ember.Application.create({
  LOG_TRANSITIONS: true,
  ready: function() {
    console.log('App ready');
  }
});

App.Router.map(function() {
    this.resource('newslinks', { path: '/' });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('newslinks');
  }
});

App.NewslinksRoute = Ember.Route.extend({
  model: function() {
  return App.Newslink.find();
  }
});

DS.RESTAdapter.reopen({
  namespace: 'api/v1'
});

App.Store = DS.Store.extend({
  revision: 13
});

App.Newslink = DS.Model.extend({
  name: DS.attr('string')
});
有人告诉我这应该是有效的,但事实并非如此。我不知道在这一点上还有什么地方可以寻求帮助,所以如果你有任何建议或有一点时间,想在这个问题上自由撰稿,请让我知道

编辑

添加routes.rb以供参考:

namespace :api do
    namespace :v1 do
      resources :newslinks
    end
  end
当轨道中不存在余烬路线时,浏览器如何知道如何查找该路线

没有。当您在浏览器中输入url时,它将向服务器发出请求,然后rails将用一些内容进行响应。因此,在本例中,当请求“/newslinks”url时,您希望rails使用包含您的ember应用程序的HTML页面进行响应

加载该页面后,ember应用程序将启动,从那里,ember路由器将用于处理ember应用程序上下文中的链接


有意义吗?

对。Rails不知道也不关心ember,但它应该设置为在请求url时为您的ember应用程序提供服务。好的,很好。所以,我将我的资源设置为一个api(为上面的问题添加了代码),但它只处理数据。我不知道的是如何“重定向”,以便由ember处理
/newslinks
:好的,现在您需要一条rails路线来为ember应用程序提供服务。在routes.rb中的“ember#main”中添加类似于“获取新闻链接”的内容。然后添加
app/controllers/ember\u controller.rb
app/views/ember/main.html.erb
。请确保您的视图中包含对
application.js
和Handlebar templates的引用。顺便说一句,ember rails gem将为您生成其中的大部分内容,因此在将来尝试一下。-我还建议查看本教程,因为我正在使用ember rails,所以有些地方不对劲。我可以通过在rails的应用程序控制器中放置一个newslinks控制器来渲染应用程序,现在我可以在控制台中看到Ember,但仍然无法渲染Ember模板,这很有意义,因为它正在从rails渲染视图。有没有办法在rails模板中渲染余烬模板?