【问题标题】:Generating json structures using ERB template使用 ERB 模板生成 json 结构
【发布时间】:2013-03-29 21:31:27
【问题描述】:

Json1:

{
    "Name1" : "Value1",
    "Name2" : "<%= Value2 %>"
}

Value2 正在调用一个读取 json2 并给出输出的方法。

ERB.new(File.read("json1.json")).result 给我第二个 json 文件的输出,而不是 json1。

我不知道如何将值 2 替换为第二个 json 的输出。有没有办法可以将已经评估的 json 的值传递给 Value2?

【问题讨论】:

    标签: ruby-on-rails ruby json file osx-mountain-lion


    【解决方案1】:

    这表明你的问题:

    ERB.new( "foo bar <%= ERB.new( 'baz' ).result  %>" ).result
    => "baz"
    

    这与 JSON 无关。这是因为 ERB 不会自动嵌套,这取决于模板的评估方式。它附加到一个名为:_erbout 的变量上,不同的ERB 对象将使用相同的变量。当您想按顺序构建结构时很好,但对于嵌套包含来说不是很好。

    您可以通过告诉 ERB 在生成输出时使用不同的命名变量来解决您的问题:

    ERB.new( "foo bar <%= ERB.new( 'baz', nil, nil, :_erbout2 ).result  %>", nil, nil, :_erbout1  ).result
    => "foo bar baz"
    

    代码开始看起来很难看,因此您可能需要对其进行抽象(尤其是如果您事先不知道嵌套的深度,因此您需要生成变量名称)

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 2014-02-21
      相关资源
      最近更新 更多