2013-02-10 50 views
4

我目前正試圖圍繞嫁接backbone.js到我的導軌應用程序。對於初學者來說,我想將其構建到應用程序的rails應用程序的特定部分。這就是說我有一個rails資源「資源:應用程序」,它給了我localhost:3000 /應用程序。現在,當我爲/應用程序實例化骨幹時,我在該rails資源中獲得骨幹路由的錨定標記。 IE本地主機:3000 /應用程序/#應用程序/ 5。混合backbone.js路由器和導軌控制器

鑑於我只會在rails應用程序的特定部分使用主幹,因此不會將其製作爲單頁應用程序,這是做事的正確方法嗎?該URL看起來有點多餘。

正確的答案可能是我需要去掉主幹路由器?如果是這樣,那麼當試圖查找集合/模型時,如何將id傳遞給主幹應用程序。

我使用骨幹網的重點在於幫助組織JavaScript應用程序的特定部分,這些部分將會是JavaScript很重的部分。

我要指出,我可以在路由器更改爲類似:

routes: 
'': 'index' 
':id': 'show' 

,這將給我本地主機的URL:3000 /應用/#/ 1 - 不過我覺得這個畫我逼到牆角並且不允許我在其他導軌資源上使用骨幹網。如果我的localhost:3000/dashboard被調用骨幹,那麼錯誤的backbone.js功能會被執行。

另一個想法是調用每個rails資源的骨幹路由器。我可以使用前面提到的路由代碼,因爲路由器只能被該路徑資源調用。

回答

3

我最終搞清楚了這一點。我切換到使用backbone-rails並遵循他們的教程來啓動並運行示例應用程序; https://github.com/codebrew/backbone-rails。解決方案出現在rails html.erb中,只加載我需要的rails資源的特定路由器。

routes: 
    "new"  : "newPost" 
    "index" : "index" 
    ":id/edit" : "edit" 
    ":id"  : "show" 
    ".*"  : "index" 

然後在說一個posts.html.erb我可以把以下內容。

<div id="posts"></div> 

<script type="text/javascript"> 
    $(function() { 
    // Blog is the app name 
    window.router = new Testing.Routers.PostsRouter({posts: <%= @posts.to_json.html_safe -%>}); 
    Backbone.history.start(); 
    }); 
</script> 

如果我的答案沒有意義,我建議閱讀前面提到的github鏈接的教程。