2010-07-16 20 views
4

我想给我的第一个Rails应用程序添加一个菜单。没什么太复杂的。 我已经搞清楚了,我可能应该从application.html.erb引用它,但之后我卡住了。我该如何去添加一个简单的菜单到Rails应用程序? (如何使用yield:菜单)

这里就是我这么远(这不是很多)

<%= render :partial => "menu" %> 

如果我在application.html.erb渲染部分呼叫“菜单”,你在哪里我把菜单文件,我该怎么称呼它?它是否需要进入视图的控制器?

我可以从我所在的任何布局子文件夹中调用此部分吗?

第二部分。如果我想根据我所处的视图显示不同的内容,我该怎么做?

<body> 
    <p>[<%= yield :menu %>]</p> 
    <%= yield %> 
</body> 
</html> 

我只是在学习Rails,所以对于这些愚蠢的问题感到抱歉。另外,我不仅对解决方案感兴趣,而且对最佳实践也有兴趣。

+0

bjg有正确的答案,如果你想找到更多的例子寻找yield:边栏实现。 – Lolindrath 2010-07-16 12:16:38

+0

啊 - 我可以看到什么产量:侧边栏现在。我想我想知道如何渲染部分。我会更新这个问题。 – seanyboy 2010-07-16 12:45:17

+0

向我的application.html.erb文件添加了<%= render:partial =>“menu”%>,并将_menu.erb添加到“views \ layouts”,但它正在查看每个控制器的视图文件夹中的部分内容。如何使它寻找父母的部分? – seanyboy 2010-07-16 12:54:24

回答

5

基本而言,您正在寻找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系列获得更多信息。这是旧的,但仍然适用

相关问题