2011-12-11 26 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