1

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

但是当我点击我的一个观点时,它不起作用——它似乎@categoriesnil不应该的。

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

@categories如果不在 my 中,我在哪里声明将在我的所有视图中使用的部分中使用的实例变量Application Controller

谢谢。

4

2 回答 2

2

如果要在您的所有视图中使用它,也许您可​​以定义一个助手。

def all_categories
 @categories ||= Category.all
end

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

更新:

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

helper_method :all_categories
于 2012-12-18T07:27:00.520 回答
1

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

class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :some_action

  def some_action
   @categories = Category.all
  end 
end

你应该读这个

于 2012-12-18T07:20:58.220 回答