0

template.erb以下を含むテンプレートの例として使用しています<%= @text %>

スコープがblock.

私はこれを行いました。これは機能します:

proc = Proc.new do
  @text = "Hello, World"
  Tilt.new('template.erb').render self
end
proc.call # => "Hello, World"

しかし、次のように、テンプレートをブロックの外にレンダリングしたいと思います。

proc = Proc.new do
  @text = "Hello, World"
end
tilt = Tilt.new('template.erb')
# I tried these alternatives:
tilt.render proc         # => ""
tilt.render proc.binding # => ""
tilt.render &proc        # => ""

ただし、次のように標準の ERB ライブラリを使用すると成功しました。

proc = Proc.new do
  @text = "Hello, World"
  @num = 100
end
ERB.new('<%= @text %> | <%= @num %>').result proc.binding # => "Hello, World | 100"

ただし、他のテンプレート エンジンをサポートしたいので、引き続き Tilt を使用したいと思います。

4

1 に答える 1