在站点范围内访问实例变量以进行导航

时间:2011-12-19 16:44:26

标签: ruby-on-rails navigation

我是第一个应用程序的铁杆新手,我很难弄清楚视图的确切运作方式。我只是想编写一个简单的导航菜单,动态地抓取我所有“服务”的列表,然后在那些下面列出子服务“服务产品”。此导航需要显示在我的应用程序的每个页面上。

我尝试了以下测试,以测试是否可以提取数据。

#application_helper.rb

  def service_list
   ServiceOffering.find(1)
  end

#application.html.erb

 <%= service_list.name %>
 <%= yield %>

这有效,但我读到我不应该把这种东西放在application_helper中。我将它移动到application_controller.rb但它在那里不起作用。我对这件事感到很困惑。显然,我在我的CRUD中有@service_offering的实例变量,但它们都意味着不同的东西,具体取决于动作。我只想定义一个我可以从任何地方访问的内容。在过去的几周里,我观看并阅读了很多教程,但几乎没有任何教程涉及到像这样的应用程序。我真的很感激如何理解如何处理这种性质的东西。谢谢!

1 个答案:

答案 0 :(得分:2)

如果要在应用程序控制器中进行设置,可以选择以下几种方法:

你可以用辅助方法设置它,所以

#application_controller.rb

helper_method :service_list

def service_list
  ServiceOffering.find(1)
end

或者您可以使用钩子将其设置并将其放入一个特殊的实例变量中,该变量不会与您拥有的其他变量冲突

#application_controller.rb

before_filter :service_list

def service_list
  @special_service_offerice = ServiceOffering.find(1)
end