2011-12-11 27 views
1

我有一個小的應用程序與文件夾結構,像這樣在Sinatra中,如何爲其他模板引擎指定文件夾?

MyApp 
    +--public 
    +--javascripts 
    +--stylesheets 
    +--specs 
    +--views 

的西納特拉文檔指定要使用助手的find_templates功能,能夠改變他查找了diferent引擎路徑。

set :views, :coffee => 'public/javascripts', :sass => 'public/stylesheets', :default => 'views' 

helpers do 
    def find_template(views, name, engine, &block) 
    _, folder = views.detect { |k,v| engine == Tilt[k] } 
    folder ||= views[:default] 
    super(folder, name, engine, &block) 
    end 
end 

這是唯一的方法來改變默認的查看路徑從視圖文件夾的coffeescript和sass?

回答

0

public不應該包含任何視圖,它應該包含靜態文件。如果它們是靜態文件,只需將它們作爲靜態文件與您的Web服務器一起提供,不需要獲得Sinatra,更不用說涉及任何模板引擎。如果你有足夠的理由這樣做,請使用static_file服務(訪問限制,依賴於用戶配置的文件選擇等)

除此之外,我不知道Tilt/Sinatra支持不同的模板目錄不同的模板引擎。但是,您可以指定一個子目錄作爲模板名稱的一部分,例如scss :'scss/style'。這些將是views目錄的子目錄,順便說一下,您可以根據Sinatra文檔更改set :views

+0

很長時間以來,我看到這個笑聲,但謝謝你的回答。我想當時我的邏輯是因爲我會請求coffescript和sass文件作爲js和css文件,爲什麼它們是視圖而不是公共文件。我只是使用haml文件的視圖。 – indigo0086