在我的`views / layouts`中哪个控制器可以使用?

时间:2012-12-18 07:11:14

标签: ruby-on-rails ruby-on-rails-3

我尝试在@categories = Category.all中添加ApplicationController

但是,当我点击其中一个观点时,它不起作用 - @categories似乎不是nil

我想在我的_navigation.html.erb文件夹中的layouts部分中生成一个菜单。

如果不在我的@categories中,我在哪里声明要在我的所有观看中使用的部分中使用的Application Controller实例变量?

感谢。

2 个答案:

答案 0 :(得分:2)

如果要在所有视图中使用它,也许你可以定义一个帮助器。

def all_categories
 @categories ||= Category.all
end

您可以使用all_categories在所有视图中访问它。

<强>更新

如果您希望在控制器中定义all_categories,请使用helper_method

helper_method :all_categories

答案 1 :(得分:1)

在应用程序控制器中使用before_filter,它会在您调用的操作之前执行任何方法

class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :some_action

  def some_action
   @categories = Category.all
  end 
end

您应该阅读this