Лично я склонен бросать сложные навигационные структуры в помощника и называть это хорошим. Однако если вы хотите, чтобы он был внешним, я бы скомбинировал файл config / nav.yml:
- text: Home
url: 'root_path'
- text: Colors
url: 'colors_path'
nodes:
- text: Blue
url: 'blue_path'
- text: Red
url: 'red_path'
Затем, когда проект загружается, он загружает файл yaml в глобальную константу:
NAV = YAML.load_file(File.join(Rails.root, 'config', 'nav.yml'))
Тогда в представлении вы бы перебрали константу NAV
.