helper 和包含在控制器中的区别是什么?

dfa*_*ang 4 ruby-on-rails helper include refinerycms

我正在研究炼油厂cms,试图向新闻等页面添加预览功能,我正在尝试将我自己的助手包含到控制器中,“包含”不起作用,但“助手”有效。

示例代码:

module Refinery
  module News
    module Admin
      class PreviewController < ActionController::Base
        #include LayoutHelper # not ok
        helper LayoutHelper # Ok
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我已经阅读了 api,助手的工作方式类似于“需要和包含”,但我不知道这里的真正区别。

谢谢 !

xda*_*azz 5

helper LayoutHelper确实包含LayoutHelper,但它直接包含在模板类中

同时include LayoutHelper,该模块包含在控制器类中

您可以检查以下来源helper

# File actionpack/lib/abstract_controller/helpers.rb, line 93
def helper(*args, &block)
  modules_for_helpers(args).each do |mod|
    add_template_helper(mod)
  end

  _helpers.module_eval(&block) if block_given?
end
Run Code Online (Sandbox Code Playgroud)