2015-12-29 38 views
0

我遇到了麻烦,如何构建一个导航菜单取决于模型的数据。如何访问局部视图中的数据?

我开始为我的静态页面设置一个控制器。

# Static content 

class PagesController < ApplicationController 
    def home 
    end 

    def contact 
    end 

    def services 
    end 
end 

然后我创建了一些partials,然后安装我的application.html.erb以在每个页面上显示它们。

<body> 
<p class="notice"><%= notice %></p> 
<p class="alert"><%= alert %></p> 
<%= render "shared/header" %> 
<%= render "shared/nav" %> 
<%= yield %> 
<%= render "shared/footer" %> 
</body> 
</html> 

现在我需要创建一个导航菜单,客户端可以改变的联系,所以我有一个模型,故事的名字和菜单项目的蛞蝓。

所以,现在在我的共享/ _nav.html.erb我需要访问@menus对象。什么是设置类似的最佳做法?来自其他MVC体系结构,我的第一个想法是将控制器链接到导航部分,但我没有看到一种方法来在轨道中做到这一点。有没有一种方法可以让我的@menus对象在整个应用程序中全局访问,因为我将在每个页面上都需要它?

回答

0

您可以创建一个非AR ruby​​类,它具有您在控制器中使用回调进行初始化时所需的所有资源,或者将其初始化为辅助模块中的变量,以便在需要时可用。

1

最常用的做法是访问类变量在行动的意见,并通过类或其他变量为局部变量局部视图:

所以,如果nav你的情况,通过共同使用谐音当地@menus为局部变量的子视图:

<%= render "shared/nav", menus: @menus %> 

nav的访问menus不是@menus

相关问题