在Sinatra中,如何为其他模板引擎指定文件夹?

时间:2011-12-11 16:37:08

标签: ruby sinatra

我有一个小应用程序,文件夹结构如此

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

sinatra文档指定使用帮助程序的find_templates函数来更改不同引擎的查找路径。

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的views文件夹中更改默认查找路径的唯一方法吗?

1 个答案:

答案 0 :(得分:0)

public不应包含任何视图,它应包含静态文件。如果它们是静态文件,只需将它们作为静态文件提供给您的Web服务器,无需获取Sinatra,更不用说任何模板引擎了。如果您有充分的理由({访问限制,依赖于用户配置的文件选择等),请使用static_file服务。

除此之外,我不知道Tilt / Sinatra是否支持不同模板引擎的不同模板目录。但是,您可以将子目录指定为模板名称的一部分,例如scss :'scss/style'。这些将是views目录的子目录,顺便提一下,您可以根据Sinatra文档更改set :views