Вы могли бы сделать рекурсивную функцию для этого, но не волнуйтесь, они просты.
На мой взгляд, меню имеет / представляет собой набор элементов, каждый из которых представляет собой ссылку или другое меню.
В вашем приложении помощник, такой метод, как "render_menu (menu)". Возвращает строку. Посмотрите документы любых методов, с которыми вы не знакомы.
def render_menu(menu)
s = '<ul>'
menu.each do |item|
if item.responds_to?(:each)
s << render_menu(item)
else
s << "<li>#{item}</li>"
end
s
end
обратите внимание, что вы можете (и должны) также СУШИТЬ:
def get_menus # todo: delete?
Menu
end