Ruby on rails 3 灰烬路线和铁路路线
自从我开始研究Ember以了解它如何与Rails一起工作以来,我一直在思考这个问题 Rails有一个routes.rb文件,其中包含任意数量的现有路由。 余烬有自己的一套单独的路线 当轨道中不存在余烬路线时,浏览器如何知道如何查找该路线 rails需要将浏览器重定向到Ember,这似乎是合乎逻辑的,但我在任何地方都没有看到这样的描述 在大多数已有rails应用程序的情况下,routes.rb中的route起着将资源转换为api的作用,并通过url提供数据 那部分很简单。我可以使用url.json查看数据 我现在正试图让浏览器通过Ember路由识别一条单一的路由(rails中的许多现有路由) 这与显示数据无关。我只想看到模板渲染。 我觉得,根据Ember框架中幕后发生的事情,浏览器可以神奇地识别路线(在routes.rb中没有提到Ember routing),但这并不是我在现实中所经历的 我不断遇到路由错误: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
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模板中渲染余烬模板?