ruby builder: не может генерировать XML-теги, такие как <fu-ba: r>

Hy Фолкс У меня возникла проблема, что я должен создать XML в ruby ​​с помощью builder, работающего на сервере sinatra. Xml заполнен тегами xml, такими как этот:

<fu-ba:r test="test1" source="h1">
  somthing
</fu-ba:r>

теперь я не знаю, как заставить строителя создать тег, подобный этому (атрибуты не проблема). Я старался:

xml.fu-ba:r(......)
xml."fu-ba:r"(.......)
xml. << "fu-ba:r"(......)

Каждая идея или решение очень поможет, спасибо, ребята

1 ответ

Решение

Идентификаторы Ruby состоят из алфавитов, десятичных цифр и символа подчеркивания и начинаются с алфавита (включая подчеркивание). Нет ограничений на длину идентификаторов Ruby.

Так как идентификаторы ruby не позволяют использовать специальные символы, в конструкторе есть метод tag! для этой цели.

Например

x.tag!("fu-ba:r") {
  x.text! "something"
}

Выходы

# <fu-ba:r>
#   something
# </fu-ba:r>
Другие вопросы по тегам