Добавление условных атрибутов с помощью Builder :: XmlMarkup - PullRequest
2 голосов
/ 27 января 2011

Скажем, у меня есть две переменные (value1 и value2), и любая из них может быть nil, как я могу создать элемент с помощью XmlMarkup и добавить только атрибуты, которые не равны nil?

Если я сделаю это

xm = Builder::XmlMarkup.new
xm.item(:attribute1=>value1, :attribute2=>value2)

и value1 и value2 равны nil, я все еще получаю

<item attribute1="", attribute2=""/>

Я также пытался добавить атрибуты после создания элемента, но безуспешно, и я не могу понять, если этодаже поддерживается.

Если это еще не очевидно, я начинающий рубин, поэтому любые замечания приветствуются.

1 Ответ

4 голосов
/ 27 января 2011

Я думаю, что-то вроде этого может сработать:

xm = Builder::XmlMarkup.new
attributes = {}
attributes[:attribute1] = value1 if value1
attributes[:attribute2] = value2 if value2
xm.item(attributes)

Если у вас более пары атрибутов, я могу показать вам способ минимизировать дублирование аналогичным методом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...