ruby-on-rails - 需要在 Builder 函数名称中使用连字符

标签 ruby-on-rails ruby xml builder

我正在尝试使用 Builder 为我正在处理的项目构建一个 xml 文档。 xml 具有非常严格的结构,因此我无法更改它。 我遇到的问题是这个。我正在尝试将子节点添加到节点 "linking-phrase-list" child 的名字必须是 "linking-phrase"。所以为了做到这一点,我会调用:

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

当然,ruby 会将此解释为 (xml.linking)-phrase(),这根本不是我想要的。所以我需要知道是否有某种方法可以让 ruby​​ 相信这是一个函数调用而不是两个?或者告诉 nokogiri 我的意思是当我不使用该功能时。

最佳答案

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

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

关于ruby-on-rails - 需要在 Builder 函数名称中使用连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6021220/

相关文章:

MYSQL迁移到postgreSQL问题

ruby-on-rails - 如何在 Rails 中创建数字评分系统?

jquery - 使用 Jquery 查找具有特定属性的文本区域的数量

ruby-on-rails - 如何在导出到 CSV 的 Ruby 方法中重构嵌套循环?

xml - 如何在 Atom Feed 中显示项目照片?

xml - XSL1.0 : How to parse only text content of a tag under a certain condition

ruby-on-rails - Rails 中的 Pundit::AuthorizationNotPerformedError

ruby - Rspec 运行除特定文件夹之外的所有测试

ruby - 如何压缩/简化从 csv 文件中提取数据的代码块?

xml - 在 Hadoop 中创建许多小的 XML 文件