只有當你使用類似erb的東西處理咖啡源文件時纔有可能。因此,如果您使用rails資產管道,您可以將.erb附加到文件擴展名,並在將文件發送到咖啡之前使用erb處理文件。我認爲在sinatra中,您必須自己包裝類似的東西。
的想法將接近這一個 - http://www.sinatrarb.com/intro#Textile%20Templates
P.S:從應用的不同層次變量的訪問是不好的想法。
編輯
你有一個被稱爲鏈輪帶動寶石鋼軌amultistage模板編譯過程。你開始叫/app/views/foo/show.js.coffee.erb
class <%= @magic %>
doSomthing: ->
console.log "hello"
在你的控制器例如文件添加實例變量
@magic = "Crazy"
的Rails首先處理ERB文件併產生
class Crazy
doSomething: ->
console.log "hello"
其次它處理的CoffeeScript文件來生成
var Crazy;
Crazy = (function() {
function Crazy() {}
Crazy.prototype.doSomething = function() {
return console.log("hello");
};
return Crazy;
})();
這就是爲什麼它被稱爲資產管道。更傳統上,你可以將它稱爲 編譯管道。如果你知道你在做什麼,你可能會得到與Sinatra一起運行的鏈輪。然而,如果您剛剛從 開始使用Rails 3.1,則您的生活會更輕鬆。
感謝您花時間回答。也許你知道我怎麼能把當地人傳給CoffeeScript?文檔沒有提到它。我最初雖然認爲sinatra會將咖啡模板類似於haml模板,所以可以創建與html相同的js。 –
看到我的答案。你不能通過當地人,但你可以在編譯前用模板引擎預處理咖啡腳本源代碼 – iafonov
iafonov和bradgonesurfing,非常感謝!我發現可以做一些類似於「咖啡(erb:app)」的東西,並將紅寶石代碼嵌入咖啡腳本中,例如「<%= @str %>」。就像你說的iafonov。唯一的缺點是,「views」文件夾中的文件需要被稱爲「app.erb」,恕我直言,隱藏文件的真實性質 - 這就是爲什麼我已經入侵我的本地sinatra寶石,並添加新選項「:preprocess」,現在我可以做是這樣的:「咖啡:應用程序,:預處理=>:ERB」並保存模板文件「意見/ app.coffee.erb」。像bradgonesurfing描述的工作。更好,更乾淨。 –