0

这可能是一个愚蠢的问题,您可以为多个控制器提供一个功能吗?

我有 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
4

3 回答 3

5

在 中定义该函数app/controllers/application_controller.rb,它将在所有控制器中可用。

于 2012-04-18T11:30:25.153 回答
2

ApplicationController可用于此。

确保您的其他控制器源自ApplicationController而不是直接源自ActionController,因为它们应该是。然后您可以在单个ApplicationController.

但是定义父控制器并让您的控制器从中派生可能是明智的,因为它ApplicationController并不是真正用于随机代码共享,而是用于过滤器和防伪等特定目的。

于 2012-04-18T11:32:01.673 回答
0

您还可以在帮助程序中定义该函数,然后将此帮助程序包含在您的 ApplicationController 中。如下:

include SessionsHelper
于 2015-12-07T20:08:55.110 回答