erbでテンプレートの継承にyieldを使用するにはどうすればよいですか? 単純な Ruby CGI スクリプトで erb を使用したいのですが、Rails とアプリケーション テンプレートのようにベース テンプレートとサブテンプレートを使用したいと考えています。
6646 次
5 に答える
38
def a
ERB.new('<%= yield %>').result(binding)
end
a{123}
#=> "123"
Kernel#binding
呼び出しがメソッド内にあることが重要です。そのようにして、コンテキストにブロックが含まれます(ブロックERB#result
を取りません)。
于 2010-09-19T08:33:43.910 に答える
5
Tilt ( http://github.com/rtomayko/tilt/ ) を確認してください。これは、Sinatra でテンプレートを処理する gem であり、ERB の利回りを他の多くの優れた機能と共に提供します。
于 2011-11-02T15:27:13.850 に答える
4
Tilt を使用できますが、余分な依存関係を追加したくない場合は、erb で生成する方法のより良い例を次に示します。
require "erb"
class Controller
TEMPLATE = ERB.new("Hello <%= @someone %>\n\n<%= yield %>")
def initialize(someone)
@someone = someone
end
def render
TEMPLATE.result(self.get_binding { yield })
end
def get_binding
binding
end
end
puts Controller.new("World").render { "I'm Jack" }
# =>
Hello World
I'm Jack
ここで答えを見つけました。
于 2014-03-18T16:48:59.223 に答える
3
私はあなたができるとは思いません-Railsはアクションパックの一部としてそのインフラストラクチャを提供します。
あなたができるかもしれないことは、actionpackを取り、それをスクリプトに追加することです。
または、軽量のテンプレートシステムを自分で作成することもできます。
または、RailsまたはMerbまたはSinatraを使用します。
于 2010-03-18T03:00:52.757 に答える