首页 > 解决方案 > 来自多维数组的 Rails 导航菜单

问题描述

我是一名在 rails/slim 应用程序中工作的网页设计师。虽然我对rails不是很熟悉......

我的任务是构建导航菜单。我记得使用 Jekyll,一个 ruby​​ 静态站点生成器。我曾经将导航数据存储为 yaml。这包括导航项目标签和路径链接。

我想知道我是否可以在rails中做同样的事情。例如,我如何在我的应用程序助手控制器中遍历这个数组并在我的视图中打印出导航?

$navPages = [
  ["Home", "root_path"],
  ["Page A",
    ["Sub Page 1", "page_a_1_index_path"],
    ["Sub Page 2", "page_a_2_index_path"],
  ],
  ["Page B", "page_b_index_path"],
  ["Page C",
    ["Sub Page 1", "page_c_1_index_path"],
    ["Sub Page 2", "page_c_2_index_path"],
    ["Sub Page 3", "page_c_3_index_path"]
  ]
]

注意:“Page A”和“Page C”只是导航父项,不是实际链接。

标签: ruby-on-railsmultidimensional-array

解决方案


不是最好的方法,只是通过查看您给出的数组来编写,您肯定会找到更好的方法来做到这一点

<nav>
  <% navPages.each do |menu| %>
  <ul>
    <% flatten_menu = menu.flatten.drop(1) %>
    <% if flatten_menu.one? %>
      <li><%= link_to "#{menu[0]}", menu[1] %></li>
    <% else %>
    <li>
      <%= menu[0] %>
      <ul>
        <% flatten_menu.each_slice(2) do |sub| %>
          <li><%= link_to "#{sub[0]}", sub[1] %></li>
        <% end %>
      </ul>
    </li>
    <% end %>
  </ul>
  <% end %>
</nav>

推荐阅读