这可能是一个愚蠢的问题,你可以为多个控制器提供一个功能吗?
我有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
答案 0 :(得分:5)
在app/controllers/application_controller.rb
中定义该功能,它将在所有控制器中可用。
答案 1 :(得分:2)
ApplicationController
可用于此目的。
确保您的其他控制器来自ApplicationController
,而不是直接来自ActionController
,因为它们应该是。{然后,您可以在单个ApplicationController
中配置过滤器,常用方法等。
但是定义一个父控制器并让你的控制器派生它可能是明智的,因为ApplicationController
并不是真正意义上的随机代码共享,而是出于特定目的,如过滤器和伪造保护。
答案 2 :(得分:0)
您还可以在帮助程序中定义该函数,然后在ApplicationController中包含此帮助程序。如下:
include SessionsHelper