Если вы знаете, что идентификаторы будут согласованы:
puts doc.search('#t, #b, #c').map{ |n| n['href'] }
Если вы не знаете, какими они будут, то XPath может доставить вас туда:
doc.search('//*[@id="t"]/../../*/*[@id]').to_html
=> "<a id=\"t\" href=\"t\">a</a><a id=\"b\" href=\"b\">b</a><a id=\"c\" href=\"c\">c</a>"
doc.search('//*[@id="t"]/../../*/*[@id]').map{ |n| n['href'] }
=> ["t", "b", "c"]
Это означает, что "найдите узел с идентификатором 't', затем вернитесь на два уровня назад и посмотрите вниз, найдя узлы с заполненными атрибутами id".