これは、EmberをRailsでどのように動作させるか調べるためにEmberを勉強して以来、私がしてきた質問です。Emberのルートとレールのルート
Railsには、ルートがいくつでも存在するroutes.rbファイルがあります。 Emberには別のルートセットがあります。
ルートがレールに存在しない場合、ブラウザーはEmberルートを探す方法をどのように知っていますか?
レールがブラウザをEmberにリダイレクトする必要があるとは論理的に思えますが、どこに書いてもわかりません。
既存のレールアプリがある場合、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
ですが、私の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
右。 Railsはemberについて知らないし気にもしませんが、urlが要求されたときにemberアプリケーションを提供するように設定する必要があります。 –
さて、素晴らしい。だから、リソースをapi(上記の質問に追加されたコード)として設定しますが、これはデータのみを処理します。私が知らないのは、 "/ newslinks"がemberによって処理されるように "リダイレクト"する方法です: –
これで、emberアプリケーションを提供するためのレールルートが必要になります。あなたのroutes.rbの 'ember#main''に 'get newslinks'のようなものを追加してください。次に、 'app/controllers/ember_controller.rb'と' app/views/ember/main.html.erb'を追加します。ビューに 'application.js'への参照とハンドルバーのテンプレートが含まれていることを確認してください。 –