2011-05-11 41 views
0

如何呈现例如红宝石文件(这在我的情况下返回一个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 

我知道倾斜没有红宝石模板。现在我把所有的内容在*.haml文件,如:

-# PDF file description 
:ruby 
    pdf = Prawn::Document.new(
    ... docs settings) 
    ... docs content 
    end 
= pdf.render() 

和我一起haml :template ...etc...

真理是渲染它,我只需要这个语法高亮,我的编辑器不能正确突出嵌入的Ruby代码。HAML文件:(因此,如果它是复杂的不打扰...

+0

我不太明白,你是因为你的编辑器不突出创建一个PDF红宝石还是用haml渲染呢?问题在哪里 - 您的编辑器仍然没有突出显示或pdf未被发送到浏览器或浏览器,而不是用于PDF? – 2011-05-11 10:02:06

+0

现在我怎么做(渲染haml模板)效果很好,但是当我编辑这些haml文件时,我的编辑器没有正确突出显示嵌入的ruby代码。我希望渲染rb文件并用rb文件替换haml文件。 – kfl62 2011-05-11 10:16:29

回答

0

我有倾斜模板

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 

I'T相信这是最好的办法,但至少是工作:)