2013-08-08 12 views
6

これは、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 

答えて

5

How does the browser know to look for an Ember route when the route does not exist in rails?

それはしません。ブラウザーにURLを入力すると、サーバーに要求が送信され、次にレールは何らかのコンテンツで応答する必要があります。したがってこの場合、 "/ newslinks" URLが要求されると、あなたのemberアプリケーションを含むHTMLページでレールを応答させます。

このページが読み込まれると、emberアプリケーションが起動し、そこからember-routerがemberアプリケーションのコンテキスト内のリンクを処理するために使用されます。

意味がありますか?

+0

右。 Railsはemberについて知らないし気にもしませんが、urlが要求されたときにemberアプリケーションを提供するように設定する必要があります。 –

+0

さて、素晴らしい。だから、リソースをapi(上記の質問に追加されたコード)として設定しますが、これはデータのみを処理します。私が知らないのは、 "/ newslinks"がemberによって処理されるように "リダイレクト"する方法です: –

+0

これで、emberアプリケーションを提供するためのレールルートが必要になります。あなたのroutes.rbの 'ember#main''に 'get newslinks'のようなものを追加してください。次に、 'app/controllers/ember_controller.rb'と' app/views/ember/main.html.erb'を追加します。ビューに 'application.js'への参照とハンドルバーのテンプレートが含まれていることを確認してください。 –

関連する問題