Ruby Rails,全局功能可供所有控制器使用

时间:2012-04-18 11:28:17

标签: ruby ruby-on-rails-3 model-view-controller controller

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

ApplicationController可用于此目的。

确保您的其他控制器来自ApplicationController,而不是直接来自ActionController,因为它们应该是。{然后,您可以在单个ApplicationController中配置过滤器,常用方法等。

但是定义一个父控制器并让你的控制器派生它可能是明智的,因为ApplicationController并不是真正意义上的随机代码共享,而是出于特定目的,如过滤器和伪造保护。

答案 2 :(得分:0)

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

include SessionsHelper