Синатра рендер файл рубина - PullRequest
0 голосов
/ 11 мая 2011

Как отобразить файл 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...

По правде говоря, это нужно мне только для подсветки синтаксиса, мой редактор неправильно выделяет встроенный код ruby ​​в файлах haml :(. Так что если это сложно, не беспокойтесь ...

1 Ответ

0 голосов
/ 11 мая 2011

Мне удалось с помощью шаблона 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

Я не уверен, что это лучший способ, но по крайней мере работает :) 1007 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...