2012-07-01 76 views
0

假設我有兩個不同的對象,我試圖在最終的BackBone視圖中加載。如何將一個實例變量從rails控制器發送到BackBone模型?

我的Rails控制器

def index 
    @visuals = Visual.all 
    @words = Word.all 

    respond_to do |format| 
    format.html # index.html.erb 
    format.json { render json: [@visuals, @words] } 
    end 
end 

在的地方,我可以添加它是在這裏:

我的Rails查看:

#visuals 

:javascript 
    $(function() { 
    window.router = new AiProject.Routers.VisualsRouter({test_visuals: #{ @visuals.to_json.html_safe } }); 
    // AiProject.words = new Words(#{@words.to_json}); 
    // ^^ Would this be the best place to insantiate my controller code's instance variable? 
    Backbone.history.start(); 
    }); 

但其他人說把它放在你的模板。

咖啡BB路由器

​​

所以,如果是這樣的話,也許我應該嘗試insantiate @words有:因爲我覺得我的骨幹框架,將其放在路由器這是很奇怪嗎?

回答

3

編輯 - 這不是在說引導。

您需要在某處調用index操作,可能直接通過jQuery.ajax,因爲它不直接對應於單個主幹模型或集合。

在您的ajax調用的成功處理程序中,您可以將返回的數據分配給您想要分配給主幹的任何內容。

我可能會爲單一的視覺效果和字模型,然後(我敢原始的JavaScript出與實踐的CoffeeScript此刻的)每個以及集合:

MyApp.Models.Visual = Backbone.Model.extend(); 
MyApp.Models.Word = Backbone.Model.extend(); 

MyApp.Collections.Visuals = Backbone.Collection.extend({ 
    model: MyApp.Models.Visual 
}); 

MyApp.Collections.Words = Backbone.Collection.extend({ 
    model: MyApp.Models.Word 
}); 

var visuals, words; 

$.ajax({ 
    url: <path to index action> 
    dataType: 'json', 
    success: function (data) { 
    visuals = new MyApp.Collections.Visuals(data[0]); 
    words = new MyApp.Collections.Words(data[1]); 
    } 
}); 

在這一點上,你有你的visualswords集合,並可以做你需要做的任何事情。

+0

你說的Rails控制器,發送到視圖,然後骨幹模型拾取視圖,將其發送到控制器,視圖和模板? – Trip

+0

是的,從rails到javascript的切換髮生在rails模板中。我仍然在假設你想要引導數據,而不是你已經在骨幹應用程序中並且只是從服務器獲取新數據的情況下工作。 – x1a4

+0

啊,那將是我的第二個問題。我會盡力而且更具體。我使用一個視圖來專門加載所有問題'@ questions',一個加載所有答案'@ answers'。這將是一個「疑問/#新」路線。因此,我希望可以使用這兩個JSON對象輕鬆地進行操作。不知道這是否會成爲你的「引導」參考。 – Trip

相關問題