这应该是一个非常简单的问题。我有一个像下面这样的变量。

@administration = Administration.first

我希望通过所有 Controller 上的每个 Controller 操作都可以访问此变量,因此,例如,如果我有一个Product Controller ,并且在其中有通常的CRUD Action ,我希望将上面定义的@administration变量放入所有CRUD Action 。 (在销毁,创建或更新时将不需要它)。我在整个项目中都有很多 Controller ,我想知道是否有比通过我想要的所有操作手动添加它更简单的方法。

我尝试了一个全局变量
 $administration = Administration.first

但是我遇到一个问题,当我更新Administration.first表的实际内容时,它没有更新。另外,我想避免使用全局变量。

任何帮助将非常感激。谢谢! :)

最佳答案

您可以在应用程序 Controller 上添加一个before_filter,以便在调用任何操作之前设置管理变量,并且可以将其限制为仅所需的操作。

class ApplicationController < ActionController::Base
...
before_filter :set_admin
def set_admin
  @administration = Administration.first
end
..

http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html

10-08 04:26