Yield(主模板)中包含的模板不会从菜单控制器轨道4加载数据

时间:2014-07-03 01:59:34

标签: ruby-on-rails erb

我在主模板页面(首次登录)中加载菜单时遇到了一些麻烦。

在我的主模板中,我有:

<header class="headline">
<%= yield :nav %>
<div class="container">

我的菜单视图:

<% content_for :nav do %>
<nav id="top">
<a class="logo" href="/">WebsiteName</a>
<ul>
<% @menu.each do |m| %>
<li>
<a class="navTop" href="<%= m.link %>"><%= m.linkName %></a>
</li>
<% end %>                   
</ul>
</nav>
<% end %>

菜单控制器:

class MenuController < ApplicationController
def index
@menu = Menu.order("order_by ASC").all
end
end

页面呈现正确,但菜单为空白。如果我访问与菜单对应的网址,我可以看到数据。

我的问题:我会采用正确的方法吗?如何在所有页面中调用菜单控制器来加载数据?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您不会从另一个控制器或视图中调用一个控制器。如果您需要为所有控制器调用一些代码(例如设置此@menu数据),则需要添加

before_action :set_menu
def menu
  @menu = Menu.order("order_by asc")
end

到应用程序控制器(.all在rails 4中是多余的。