Заменить :
@links = doc.xpath('//links/item').map do |i|
{'title' => i.xpath('//title'), 'url' => i.xpath('//url')}
на :
@links = doc.xpath('//links/item').map do |i|
{'title' => i.xpath('title'), 'url' => i.xpath('url')}
Объяснение :
//title
и
//url
являются абсолютными выражениями XPath, и они выбирают все (соответственно) title
и все url
элементы в документе XML.
Сравните это с :
title
и
url
Это относительно выражений XPath и выберите все (соответственно) title
и url
только дочерние узлы current .