ruby-on-rails - 来自多维数组的 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”只是导航父项,不是实际链接。
解决方案
不是最好的方法,只是通过查看您给出的数组来编写,您肯定会找到更好的方法来做到这一点
<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>
推荐阅读
- python - 在 Anaconda 上使用 TensorFlow GPU
- java - 考虑到 Java 版本的 RSA 和 WebSphere 兼容版本
- python - 如何将 Z 组件添加到我的图形引擎
- go - 在以下任何一个中都找不到包“github.com/jackc/pgx/v4”:
- c++ - 非法表达式和 const_Hasher 丢失
- amazon-web-services - DNS 新别名记录未传播到 ALB
- php - PHP:在会话中仅加载一次 xml
- javascript - 给定包裹在其中的 div 的 id,我如何获取选中的单选按钮的值?
- javascript - Node和浏览器中的不同输出
- c++ - 为什么参数包不扩展为正确的类型?