Ruby Builder Gem - 动态设置节点名称

时间:2012-11-07 12:19:49

标签: ruby builder

我目前正在使用Builder gem for Ruby为我的应用程序中的资源生成XML表示。 XML表示具有多个始终结构相同的子节点,但顶级节点具有不同的名称,具体取决于资源的布尔属性的值。有什么办法可以动态生成构建器节点吗?像这样的东西(已经尝试过,不起作用):

if resource.attr
  top_level_node = :ForFlowBased
else
  top_level_node = :ForNonSeamlessOffload
end

builder = Builder::XmlMarkup.new
builder.send(top_level_node). do |top_level_node|
....
end

该代码将生成节点<send:ForFlowBased>。同样,如果我调用builder.(top_level_node),则生成的xml为<call:ForFlowBased>。我正在寻找动态发送构建器我想要调用它的方法,而不是添加发送或调用XML。

1 个答案:

答案 0 :(得分:4)

这样做:

builder.tag!(top_level_node) do |top_level_node|

end