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