这可能是一个愚蠢的问题,您可以为多个控制器提供一个功能吗?
我有 2 个控制器
class C1Controller < ActionController::Base
def add(input_value)
@output_value = input_value * 2
end
end
现在我想像这样在另一个控制器中使用这个添加功能
class C2Controller < ActionController::Base
@new_value = add(2)
end
这可能是一个愚蠢的问题,您可以为多个控制器提供一个功能吗?
我有 2 个控制器
class C1Controller < ActionController::Base
def add(input_value)
@output_value = input_value * 2
end
end
现在我想像这样在另一个控制器中使用这个添加功能
class C2Controller < ActionController::Base
@new_value = add(2)
end
在 中定义该函数app/controllers/application_controller.rb
,它将在所有控制器中可用。
ApplicationController
可用于此。
确保您的其他控制器源自ApplicationController
而不是直接源自ActionController
,因为它们应该是。然后您可以在单个ApplicationController
.
但是定义父控制器并让您的控制器从中派生可能是明智的,因为它ApplicationController
并不是真正用于随机代码共享,而是用于过滤器和防伪等特定目的。
您还可以在帮助程序中定义该函数,然后将此帮助程序包含在您的 ApplicationController 中。如下:
include SessionsHelper