2013-11-04 80 views
1

我刚开始检查sinatra的一个项目,我开始玩HAML。Sinatra动态模板名称

但是,我遇到了一个问题 - 我有一个splat路径需要指向一个名称与splatted出的URL相同的名称的HAML文件,但是,任何传递的字符串到[haml]模板方法被视为内联模板,而不是文件名。

没有文件表明有办法做到这一点。我能想到的唯一解决方案是读取必要的模板文件的全文并将其传递给HAML函数;然而,这样的解决方案令人难以置信的麻烦。

get '/stpl/*.haml' do |page| 
    haml page # <--- `page' is treated as an inline template 
end 

虽然此功能,预计当一个读取文档,没有其他手段,这似乎完成我需要什么。

+0

,因为它是内部的我会删除从呼叫HAML后缀应用。 Sinatra最终会返回html。 – froderik

回答

4

如果传递一个symbolhaml,它将在views为匹配的文件,这样你就可以做到这一点,而不是:

get '/stpl/*.haml' do |page| 
    haml page.to_sym # attempts to get views/<page>.haml 
end