2013-08-07 77 views
1

介紹從現有的Rails應用程序重新路由到灰燼

這是我在灰燼(現有的Rails應用程序)的第一次嘗試,並有一些重要的資源在那裏的interWeb,但考慮到我已經閱讀所有這些,我仍然想要更多這是很好的檢查筆記在這裏。

我有一個新的模式:新聞鏈接 我建立了一個API,它:api/v1/newslinks.json API工作原理:http://localhost:3000/api/v1/newslinks.json

數據

{"newslinks":[{"id":1,"title":"A Sample Post","navlink":"This will be a simple post record."}]}

代碼

問題是,Ember似乎是lett通過其手中荷蘭國際集團的路線滑(這是我做錯了下面的代碼,我敢肯定):

的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') 
    }); 

Application.handlebars

<!DOCTYPE html> 
    <html> 
    <head> 
    <meta name="description" content="Ember - Latest" /> 
    <meta charset=utf-8 /> 
    <title>Ember Latest</title> 
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.min.css" rel="stylesheet"> 
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/js/bootstrap.min.js"></script> 
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
     <script src="http://builds.emberjs.com/handlebars-1.0.0.js"></script> 
     <script src="http://builds.emberjs.com/ember-latest.js"></script> 
     <script src="http://builds.emberjs.com/ember-data-latest.js"></script> 
    </head> 
    <body> 
     <script type="text/x-handlebars"> 
     <h2>Here I am</h2> 
     </script> 
    </body> 
    </html> 

的routes.rb

App::Application.routes.draw do 

    namespace :api do 
    namespace :v1 do 
     resources :newslinks 
    end 
    end 

我甚至試圖返回數據還沒有。只是想看到路由連接,但我得到一個路由錯誤。我如何確保Ember看到URL「/ newslinks」?

讓我知道你是否有任何建議。謝謝!

隨機無關觀察

Ember.js好像讀博爾赫斯的迷宮,好東西很多,而且我可以告訴它會得到後續的讀數要好得多,直到一切都只是非常有意義。

+1

可能的重複[使用「ember-rails」將現有Rails應用程序從Rails遷移到Ember)(http://stackoverflow.com/questions/18091588/migrate-routes-from-rails-to-ember-with -existing-rails-application-using-ember) –

回答

1

我會使用chrome來查看Ember請求的URL。這很可能是根據你表示你的網址爲'/newslinks.json'來請求'/ newslinks',這是不正確的。

在這種情況下,我會將路由從'/newslinks.json'更改爲更合適的REST URL格式「/ newslinks」

+0

嘿安德魯,很難解析你的答案。你能指出我需要改變以適應你的答案的代碼中的位置(Ember正在斟酌)。如果有幫助,我很樂意提供更多信息。 –

+0

讓我先澄清一下問題。再次閱讀後,我意識到我可能會誤解。在瀏覽器中訪問'/ newslink'路線時遇到問題嗎?或者數據不是從API返回到Ember的? – AndrewK

+0

獲取路由錯誤。直到看到模板呈現(使用Ember)時才擔心數據。 –

1

爲了使工作從您的IndexRoute重定向(這是隱式和自動創建的),您newslinks路線sonce你在你的路由器地圖/爲您newslinks資源的路徑有。

例如添加到您的應用程序,它應該工作:

App.IndexRoute = Ember.Route.extend({ 
    redirect: function() { 
    this.transitionTo('newslinks'); 
    } 
}); 

工作Demo

希望它有幫助。

+0

這個演示很有效,當然,但我還沒有能夠通過/ newslinks連接。路由錯誤。我添加了我的routes.rb以查看是否有幫助。 –

+0

我想知道是否還有其他的東西(簡單)我不考慮... –

+0

hm,儘可能的我可以看到你的routes.rb看起來很好(雖然我必須承認我不擅長滑軌) – intuitivepixel