ruby 如何在另一个erb中嵌套一个erb调用?

fcwjkofz  于 2023-02-18  发布在  Ruby
关注(0)|答案(1)|浏览(132)

当我跑步时:

ERB.new("1. <%= ERB.new('2').result binding %>. 3").result binding

输出为:

2. 3

而预期输出为:

1. 2. 3

看起来嵌套的erb正在删除模板中它之前的所有内容。有人以前见过这种情况吗?推荐的嵌套erb的方式是什么?有可能吗?

ymdaylpp

ymdaylpp1#

命名空间中存在冲突,特别是在嵌套ERB重新初始化的_erbout变量中。
ERB.new()的文档中提到了这种嵌套ERB的情况,说明如果在相同的作用域(绑定)中操作,则必须使用:eoutvar属性重命名变量。

ERB.new("1. <%= ERB.new('2', eoutvar: \"_erbout2\").result binding %>. 3").result binding
#=> "1. 2. 3"

相关问题