Ember路由和路轨路线

Bri*_*ugh 6 ruby-on-rails-3 ember.js ember-router ember-rails

这是我自从开始研究Ember以来看到它如何与Rails一起工作的问题.

Rails有一个包含任意数量现有路由的routes.rb文件.Ember有自己独立的路线.

当路由不存在于rails中时,浏览器如何知道查找Ember路由?

rails需要将浏览器重定向到Ember似乎是合乎逻辑的,但我还没有看到在任何地方写过.

在大多数情况下,存在rails应用程序,routes.rb中的路由扮演将资源转换为api的角色,并通过URL使数据可用.

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

我现在正处于尝试让浏览器通过Ember路由识别单个路由(轨道中存在许多路由)的阶段.

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

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

我一直收到路由错误:

Started GET "/newslinks" for 127.0.0.1 at 2013-08-08 12:44:30 -0700 ActionController::RoutingError (No route matches [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
Run Code Online (Sandbox Code Playgroud)

这是我的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')
});
Run Code Online (Sandbox Code Playgroud)

我被告知这实际上应该有效,但事实并非如此.目前还不确定在哪里可以寻求帮助,所以如果您有任何建议或有一点时间并希望自由撰稿,请告诉我.

编辑

添加routes.rb以供参考:

namespace :api do
    namespace :v1 do
      resources :newslinks
    end
  end
Run Code Online (Sandbox Code Playgroud)

Mik*_*tti 5

当路由不存在于rails中时,浏览器如何知道查找Ember路由?

它没有.当您在浏览器中输入网址时,它会向服务器发出请求,然后rails会响应某些内容.因此,在这种情况下,当请求"/ newslinks"url时,您希望rails使用包含您的ember应用程序的HTML页面进行响应.

当加载该页面时,ember应用程序将启动并从那里使用ember-router来处理你的ember应用程序上下文中的链接.

合理?