2016-04-12 36 views
0

我很难过。我想在我的导航栏中使用实例变量来显示表格中的动态内容。在部分Rails 4中使用动态实例变量

就文件结构而言,在我的Views中,我有一个/ layouts文件夹。在该文件夹中,有一个_header.html.erb用于位于视图中的导航栏,该视图通过<%= render 'layouts/header' %>位于application.html.erb文件中。

现在,它变得粘稠。在我的导航栏中,我有一组链接。我希望它使一个实例变量作为一个链接(它显示的文本,而不是路径),所以我写:

<ul class="nav navbar-nav navbar-right"> 
     <li><%= link_to "About", about_path %></li> 
      <li><%= link_to "Settings", edit_user_registration_path %></li> 
      <li><%= link_to "My Example", myexample_path %></li> 
      <li><%= link_to @example, stack_path %></li> 
    </ul> 

我曾尝试做两个不同的东西与实例变量。

所以我需要定义@example = Stack.where(user_id: current_user.id).pluck(:points)返回一个我想放置在该导航栏中的数字。我曾尝试将该实例放置在应用程序控制器中,方法是制作布局控制器并将其放置在def index中。

因此,我的问题是:创建一个实例变量来读取这个_layouts.html.erb文件,哪个控制器适合使用?

作为最后一点,我是否将它添加到应用程序控制器或布局控制器,它不会呈现。如果我删除了@example实例,而是放置了静态文本,则会将其添加到导航栏中。所以这似乎是我的问题。

+0

<%=渲染 '标头' %>尝试这个或放header.htm.erb在共享目录并使用这个<%= render'shared/header'%> – uzaif

+0

@uzaif - 要明确一点,layouts/_header.html.erb实际上是渲染,除了动态内容之外。我很困惑,如果我想存储一个实例变量,需要使用哪个控制器将它连接到头文件。你的解决方案是否解决这个问题 – darkginger

+0

在应用程序控制器中写入方法并在过滤器之前访问它,并返回header.html.erb中所需的变量 – uzaif

回答

2
在应用控制器

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_filter :add_header_text 

    def add_header_text 
    @menu = Menu.all 
    end 

end 

现在@menu实例变量是在报头部分可用

相关问题