【问题标题】:Ruby Rails, global function available to all controllersRuby Rails,所有控制器都可用的全局函数
【发布时间】:2012-04-29 19:20:17
【问题描述】:

这可能是个愚蠢的问题,你能不能有一个功能可供多个控制器使用?

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢!不敢相信我忽略了这一点,我猜我太饿了,无法思考!午餐时间:)
    【解决方案2】:

    ApplicationController 可以用于此。

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

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

    【讨论】:

      【解决方案3】:

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

      include SessionsHelper
      

      【讨论】:

        猜你喜欢
        • 2011-03-05
        • 2020-07-10
        • 1970-01-01
        • 1970-01-01
        • 2020-04-10
        • 2013-02-15
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多