如何渲染ruby文件(在我的例子中返回一个pdf文档),例如:
get "/pdf" do
@locals = {some_locals_hash}
headers({'Content-Type' => 'application/pdf',
'Content-Description' => 'File Transfer',
'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => "attachment;filename=\"test.pdf\"",
'Expires' => '0',
'Pragma' => 'public'})
ruby :test, :layout => false, :locals => @locals
end
我知道Tilt没有ruby模板。现在,我将所有内容放在*.haml
文件中,如:
-# PDF file description
:ruby
pdf = Prawn::Document.new(
... docs settings)
... docs content
end
= pdf.render()
我用haml :template ...etc...
事实是,我只需要这个用于语法高亮,我的编辑器没有在haml文件中正确地突出显示嵌入的ruby代码:(。所以如果它复杂的话不要打扰......
答案 0 :(得分:0)
我使用Tilt模板管理
module Tilt
class RubyTemplate < Template
def prepare
end
def evaluate(scope, locals, &block)
super(scope, locals, &block)
end
def precompiled_template(locals)
data.to_str
end
end
register 'rb', RubyTemplate
end
并使用辅助方法
helpers do
def ruby(*args)
render(:rb, *args)
end
end
我不确定这是最好的方法,但至少工作正常:)