当我跑步时:
ERB.new("1. <%= ERB.new('2').result binding %>. 3").result binding
输出为:
2. 3
而预期输出为:
1. 2. 3
看起来嵌套的erb正在删除模板中它之前的所有内容。有人以前见过这种情况吗?推荐的嵌套erb的方式是什么?有可能吗?
ymdaylpp1#
命名空间中存在冲突,特别是在嵌套ERB重新初始化的_erbout变量中。ERB.new()的文档中提到了这种嵌套ERB的情况,说明如果在相同的作用域(绑定)中操作,则必须使用:eoutvar属性重命名变量。
_erbout
ERB.new()
:eoutvar
ERB.new("1. <%= ERB.new('2', eoutvar: \"_erbout2\").result binding %>. 3").result binding #=> "1. 2. 3"
1条答案
按热度按时间ymdaylpp1#
命名空间中存在冲突,特别是在嵌套ERB重新初始化的
_erbout
变量中。ERB.new()
的文档中提到了这种嵌套ERB的情况,说明如果在相同的作用域(绑定)中操作,则必须使用:eoutvar
属性重命名变量。