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