这里有点问题。我试图在所有页面添加菜单。原因是编辑更新所有网页的单个文件非常容易。
在我的layouts / application.html.erb中,我有这个,在body标签之间:
<% content_for :menu do %>
<ul>
<li> page 1 </li>
<li> page 2 </li>
</ul>
<% end %>
<%= yield %>
在我的欢迎/索引中,我有:
<div id="menu">
<%= yield :menu%>
</div>
<h1>Welcome to my index page!</h1>
不确定是否需要所有这些,所以当我转到root时,我只看到welcome / index文件中的内容而不是链接。我错过了什么吗?
答案 0 :(得分:0)
它应该是另一种方式,这意味着您可以在应用程序布局中调用:yield
并在content_for
文件中使用index
。
实际上content_for
标签的想法是允许不同页面略有不同的变体,但仍然从布局调用相同的名称。从here
我认为,在您的情况下,您需要的是布局中的部分内容,甚至您可以在布局中使用菜单。由于每个页面的布局都是可见的,因此每个页面都有可用的菜单,如果以后需要修改,仍然只需要更改一页
1 - 作为部分
#app/views/layouts/_menu.html.erb
<ul>
<li> page 1 </li>
<li> page 2 </li>
</ul>
#app/views/layouts/application.html.erb
<%= render partial: 'menu' %>
<%= yield %>
2 - 将所有文件放在同一个文件中
#app/views/layouts/application.html.erb
<ul>
<li> page 1 </li>
<li> page 2 </li>
</ul>
<%= yield %>
答案 1 :(得分:0)
您的application.html文件中应该有<%= yield :menu%>
。
您还可以创建一个文件夹(让它命名为“共享”),您可以在其中获得菜单,消息等。
然后你可以试试这样的东西
#welcome/index.html.erb
<div class="content">
Your Index Content here.
</div>
#layouts/application.html.erb
<%= yield :menu %>
<%= yield %>
#shared/menu.html.erb
<% content_for :menu do %>
<div id="menu">
<ul>
<li> page 1 </li>
<li> page 2 </li>
</ul>
</div>
<% end %>