Это вопрос, который возник у меня с тех пор, как я начал изучать Ember, чтобы посмотреть, как он может работать с Rails.
В Rails есть файл route.rb с любым количеством существующих маршрутов. Ember имеет свой отдельный набор маршрутов.
Как браузер узнает, что нужно искать маршрут Ember, если маршрут не существует в rails?
Казалось бы логичным, что рельсы должны были бы перенаправить браузер на Ember, но я нигде не видел, чтобы это было написано.
В большинстве случаев, когда существует приложение rails, маршрут в route.rb играет роль преобразования ресурса в API, что делает данные доступными через URL-адрес.
Эта часть была легкой. Я вижу данные, используя этот url.json
Сейчас я нахожусь на этапе попытки заставить браузер распознавать один-единственный маршрут (из многих существующих в рельсах) через маршрутизацию Ember.
Это не имеет ничего общего с отображением данных. Я просто хочу увидеть визуализацию шаблона.
У меня такое ощущение, что маршрут просто волшебным образом распознается браузером (без упоминания маршрутизации Ember в route.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"):
Вот мое приложение.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')
});
Мне сказали, что на самом деле это должно работать, но это не так. Не знаю, к кому еще обратиться за помощью на данный момент, поэтому, если у вас есть какие-либо рекомендации или у вас есть немного времени и вы хотите заняться этим вопросом на фрилансе, пожалуйста, дайте мне знать.
Изменить
Добавление route.rb для справки:
namespace :api do
namespace :v1 do
resources :newslinks
end
end