Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails生成站点导航的方法_Ruby On Rails_List_Hash_Navigation_Loops - Fatal编程技术网

Ruby on rails Rails生成站点导航的方法

Ruby on rails Rails生成站点导航的方法,ruby-on-rails,list,hash,navigation,loops,Ruby On Rails,List,Hash,Navigation,Loops,大多数网站的导航采用html无序列表的形式,列表元素中有锚。键入所有这些项目标记似乎不是创建导航列表的简单方法 我问你如何为rails导航创建一个列表,如果你能帮助我开发下面描述的方法 我所做的是在我的应用程序\u助手中创建一个哈希,然后在我的erb文件中添加一个快速迭代代码来为我生成列表 应用程序帮助程序: $navPages = { 'top1' => "top1_path",

大多数网站的导航采用html无序列表的形式,列表元素中有锚。键入所有这些项目标记似乎不是创建导航列表的简单方法

我问你如何为rails导航创建一个列表,如果你能帮助我开发下面描述的方法

我所做的是在我的应用程序\u助手中创建一个哈希,然后在我的erb文件中添加一个快速迭代代码来为我生成列表

应用程序帮助程序:

               $navPages = { 
                          'top1' => "top1_path",
                          'top2' => "top2_path",
                          'top3' => "top3_path",

                          }
html.erb迭代代码:

<ul>
           <% $navPages.each do |ntext,npath| %>
           <li><%= link_to ntext, self.send(npath.to_sym) %></li>
           <% end %>
</ul>
我已经尝试了很多方法将散列转换成带有锚的无序列表,但我还没有找到一个完美的解决方案。你有什么想法吗?我喜欢此任务的哈希的原因是,我可以捕获项目的关联以及其他有用的信息,例如我存储在:location符号中的链接位置

我认为散列可以/应该用更少的输入来交换。。。像

top1 loc
  member1 loc
  member2 loc
top2 loc
但不确定该在何处统计:

所以。。。用这些信息生成一个HTML列表对我来说似乎不太容易。。。轨道上的每个人都在做什么

谢谢


谢谢

我的建议是研究使用Gem。这有一个很好的用于定义导航的DSL,您可以完全控制高亮显示、子菜单显示以及使用的类和ID


以下是一种常见做法,即使用两个erb文件,例如shared/_nav.html.erb、shared/_subnav.html.erb,原因如下:

过早抽象是不好的 导航不经常改变 Rails way的意思是:

干的 配置上的约定 模式集,如MVC、委托、代理、观察者、STI等 胖模特,瘦控制器 人类可读编码标准 低调的 所以Rails不涉及特定的客户端表示,那么您可以这样做以使代码清晰和简单

我个人的观点是使用JS构建导航更好,因为基于JS进行移动标记更容易

    $myHash = { 
           'top1' => { :location => "top1_path"},
           'top2' => { :location => "top2_path", :members => { 
                          "sub1-1" => { :location => "sub1_path"},
                          "sub1-2" => { :location => "sub2_path"},
                          "sub1-3" => { :location => "sub3_path"},

                          }
           },
           'top3' => { :location => "top3_path", :members => { 
                          "sub2-1" => { :location => "sub1_path"},
                          "sub2-2" => { :location => "sub2_path"},
                          "sub2-3" => { :location => "sub3_path"},

                          }
           }


               }
top1 loc
  member1 loc
  member2 loc
top2 loc