我该如何去添加一个简单的菜单到Rails应用程序? (如何使用yield:菜单)
问题描述:
我想给我的第一个Rails应用程序添加一个菜单。没什么太复杂的。 我已经搞清楚了,我可能应该从application.html.erb引用它,但之后我卡住了。我该如何去添加一个简单的菜单到Rails应用程序? (如何使用yield:菜单)
这里就是我这么远(这不是很多)
<%= render :partial => "menu" %>
如果我在application.html.erb渲染部分呼叫“菜单”,你在哪里我把菜单文件,我该怎么称呼它?它是否需要进入视图的控制器?
我可以从我所在的任何布局子文件夹中调用此部分吗?
第二部分。如果我想根据我所处的视图显示不同的内容,我该怎么做?
<body>
<p>[<%= yield :menu %>]</p>
<%= yield %>
</body>
</html>
我只是在学习Rails,所以对于这些愚蠢的问题感到抱歉。另外,我不仅对解决方案感兴趣,而且对最佳实践也有兴趣。
答
基本而言,您正在寻找content_for
帮手。你把它放在你的视图里面,然后在部分或布局中填充命名块,例如:menu
。如果您愿意,您可以选择使用部分来实际定义content_for
区域的内容。
在视图中:
<% content_for :menu do %>
<ul>
<li> ... </li>
<li> ... </li>
</ul>
<% end %>
或为:
<% content_for :menu do %>
<%= render :partial => "some_menu_content" %>
<% end %>
在布局或部分:
<div id="menu">
<%= yield :menu%>
</div>
关注此screencast从Railscasts系列获得更多信息。这是旧的,但仍然适用
bjg有正确的答案,如果你想找到更多的例子寻找yield:边栏实现。 – Lolindrath 2010-07-16 12:16:38
啊 - 我可以看到什么产量:侧边栏现在。我想我想知道如何渲染部分。我会更新这个问题。 – seanyboy 2010-07-16 12:45:17
向我的application.html.erb文件添加了“menu”%>,并将_menu.erb添加到“views \ layouts”,但它正在查看每个控制器的视图文件夹中的部分内容。如何使它寻找父母的部分? – seanyboy 2010-07-16 12:54:24