2011-11-15 71 views

回答

12

您可以通過在開放標籤使用兩個%逃脫僱員再培訓局的符號,並把你的骨幹模板在軌觀點:

<script type='text/template' id="my-template'> 
    <%%= name %> 
</script> 

將輸出在頁面下面:

<script type='text/template' id="my-template'> 
    <%= name %> 
</script> 

當您嘗試學習時,將您的Backbone模板直接放入您的導軌視圖中是恕我直言的最佳選擇。你已經在與新概念搏鬥,不需要再增加一個障礙。

+0

偉大的提示,我不知道。事實上,我用jst乾淨地存儲在資產內的樹上。 – apneadiving

+0

我使用自定義正則表達式來表示下劃線模板。感謝這兩個'%'提示。 – Agent47DarkSoul

-3

你應該把你的Backbone模板放在哪裏?我會說沒有。我相信在大多數Rails應用程序中,服務器應該負責HTML的所有呈現,而客戶端JavaScript應該只負責將呈現的HTML插入到DOM中。除此之外,這使得I18n更容易。

如果Rails僅作爲主要在客戶端運行的應用程序的輕量級後端使用(但在這種情況下,您可能希望使用Sinatra或其他方法),則會發生異常。在這種情況下,Rails應該可以渲染什麼也沒有,並且有JS做所有的渲染。

請注意這裏的基本原則。服務器應該負責所有渲染,或者客戶端應該負責。分裂它會使生活更加艱難。

+0

渲染的小部分如表格行如何? –

+0

同樣的答案。不要分割渲染。或者我誤解了你的問題? –

+0

也許我誤解了答案。那麼,爲了使用'Backbone.js',我必須在某處編寫模板。這個模板使用'<%= %>'標籤,我的問題是關於是否有一種方法可以讓rails爲客戶端渲染這個標籤,還是有一種我可以用來更容易地渲染Backbone.js(Underscore.js)模板的格式。 –

4

從Rails 3.1開始,它提供了兩件事讓使用Backbone模板更容易一些:資產管道和自動JST(JavaScript模板)編譯。

在您的app/assets文件夾中創建一個名爲templates的文件夾。該目錄將自動被資產管道拾取。

接下來,爲該目錄中的文件命名,擴展名爲jst,以及您要創建的模板類型爲ejs(嵌入式JavaScript)。你甚至可以將它們嵌套在目錄中。例如:

app/assets/templates/my_template.jst.ejs 
app/assets/templates/bookmarks/show.jst.ejs 

資產管道,您還可以通過簡單地改變文件擴展名(幷包括任何必要的寶石)使用其他模板語言,如嵌入式的CoffeeScript,小鬍子,把手等。

我們引用您JST模板在你的骨幹觀點,簡單地使用路徑文件名:

var Bookmark = Backbone.View.extend({ 
    template: JST['bookmarks/show'], 
    render: function() { 
    this.$el.html(this.template(this.model.attributes)); 
    return this; 
    } 
}); 

您可能需要將此行添加到您application.js

// require_tree ../templates 

這裏有一個很好的文章,這更詳細地解釋了所有這一切:http://www.bigjason.com/blog/precompiled-javascript-templates-rails-3-1

相關問題