需要在Builder函数名中使用连字符

zsp*_*ace 3 ruby xml ruby-on-rails builder

我正在尝试使用Builder为我正在处理的项目构建一个xml文档.xml有一个非常严格的结构,所以我不能改变它.我遇到的问题是这个.我正在尝试将子项添加到节点中子项"linking-phrase-list" 的名称必须是"linking-phrase".所以为了做到这一点,我会打电话:

test = Builder.new do |xml|
  xml.map {
    xml.send(:"linking-phrase-list") {
      xml.linking-phrase("label" => "edge1", "id" => "idedge1")
    }
  }
end
Run Code Online (Sandbox Code Playgroud)

当然,ruby将此解释为(xml.linking)-phrase()完全不符合我的要求.所以我需要知道是否有某种方法我可以说服ruby是一个函数调用而不是两个?那或告诉nokogiri我的意思是当我不使用该功能时.

Dou*_*rer 5

使用tag!构建器提供的方法就是为了这个目的.

test = Builder.new do |xml|
  xml.map {
    xml.tag!("linking-phrase-list") {
      xml.tag!("linking-phrase", "label" => "edge1", "id" => "idedge1")
    }
  }
end
Run Code Online (Sandbox Code Playgroud)