Это то, что я придумал. Он используется в синтаксисе Slim, если вы с ним не знакомы.
Сначала я изменил форму своих навигационных данных:
$navPages = [
[
"Page A",
"page_a_index_path",
""
],
[
"Page B",
"",
[
[ "Sub Page 1", "sub_page_a_1_index_path"],
[ "Sub Page 2", "sub_page_a_2_index_path"],
]
],
[ "Page C", "page_c_index_path", "" ],
[
"Page D",
"",
[
[ "Sub Page 1", "sub_page_d_1_index_path"],
[ "Sub Page 2", "sub_page_d_2_index_path"],
]
],
]
Затем я повторил это:
ul.menu
- $navPages.each do |label, path, items|
- if path != ""
li
= link_to label, self.send(path.to_sym)
- else
li.has-children
= link_to label, "#"
- if items != ""
ul
- items.each do |nlabel, npath|
li
= link_to nlabel, self.send(npath.to_sym)