現在、Ruby の Builder gem を使用して、アプリケーション内のリソースの 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
そのコードは node を生成します<send:ForFlowBased>
。同様に、 を呼び出すbuilder.(top_level_node)
と、生成される xml は<call:ForFlowBased>
. XMLにsendまたはcallを追加せずに、呼び出したいメソッドをビルダーに動的に送信しようとしています。