テンプレート ファイルを別のディレクトリに配置したい。(foo/、バー/)
シナトラを使ってどのように書きますか?
この方法は間違っています。
ドキュメントから:
set :views, Proc.new { File.join(root, "templates") }
複数のディレクトリを使用する場合(これもドキュメントから):
set :views, ['views', 'templates']
helpers do
def find_template(views, name, engine, &block)
Array(views).each { |v| super(v, name, engine, &block) }
end
end
ちなみに、文字列ではなく記号でテンプレートを参照する必要があります。したがって、完全なコードは次のようになります。
require 'rubygems'
require 'sinatra'
require 'haml'
set :views, ['foo', 'bar']
helpers do
def find_template(views, name, engine, &block)
Array(views).each { |v| super(v, name, engine, &block) }
end
end
get '/' do
haml :index, :layout => :bar
end
そしてあなたはこれらのファイルを持っています:
foo/index.haml
bar/bar.haml