Ruby Builder Gem - динамически устанавливаемое имя узла

В настоящее время я использую гем Builder для 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 ответ

Сделай это:

builder.tag!(top_level_node) do |top_level_node|

end
Другие вопросы по тегам