【发布时间】:2011-11-27 03:52:32
【问题描述】:
大多数网站的导航采用 html 无序列表的形式,在列表元素中带有锚点。输入所有这些项目标签似乎不像是创建导航列表的 rails DRY 方式。
我问您如何创建一个用于在 Rails 方式中导航的列表,以及您是否可以帮助我开发我正在尝试的方法,如下所述...
我所做的是在我的 application_helper 中创建一个哈希,然后在我的 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>
列表输出:
<ul>
<li><a href="/">top1</a></li>
<li><a href="/">top2</a></li>
<li><a href="/">top3</a></li>
</ul>
这对我来说似乎很正常......我在扩展带有“子项目”的列表或列表中的列表时遇到了问题。
我创建了哈希:
$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"},
}
}
}
我尝试了很多方法将该哈希转换为带有锚的无序列表,但我还没有找到一个完美的干净解决方案。关于如何做到这一点的任何想法?我喜欢这个任务的哈希的原因是我可以捕获项目的关联以及其他有用的信息,例如我存储在 :location 符号中的链接位置。
我认为哈希可以/应该换成输入更少的东西……比如
top1 loc
member1 loc
member2 loc
top2 loc
虽然不知道在哪里统计:(
所以...用这些信息生成一个 HTML 列表对我来说似乎不是很麻烦... Rails 上的每个人都在做什么?
谢谢!
谢谢!
【问题讨论】:
标签: ruby-on-rails list hash navigation loops