2011-07-29 3 views

ответ

6
series = { :series_id => doc.xpath("Data/Series/id").try(:inner_text) } 
+1

DigitalRoss правильный, именно то, что я собираюсь поставить. Функция 'try' творит чудеса. – ardavis

+0

Это хороший. Хотя он ведет себя несколько иначе: он всегда будет добавлять ключ ': series'. Эффект в большинстве случаев тот же. 'series [: series_id]' также будет возвращать 'nil', если ключ не определен, если только они явно не проверяют наличие ключа. – nathanvda

4

Что-то вроде

series = Hash.new 
id_element = doc.xpath("Data/Series/id") 
series[:series_id] = id_element.inner_text unless id_element.nil? 
+6

Было бы более идиоматично говорить «если id_element» на последней строке вместо «если id_element.nil?» – gregspurrier

0

Я думаю, что самый революционный рефакторинга будет использовать XML-объекта библиотеки отображения как happymapper и оставить все это грязные детали реализации под капотом.

Смежные вопросы