帮助器和包含在控制器之间的区别是什么?

时间:2014-03-26 04:28:29

标签: ruby-on-rails include helper refinerycms

我正在研究refinerycms,试图将预览功能添加到类似页面的新闻中,我试图将自己的助手包含在控制器中,'include'不起作用,但'helper'可以工作。

示例代码:

module Refinery
  module News
    module Admin
      class PreviewController < ActionController::Base
        #include LayoutHelper # not ok
        helper LayoutHelper # Ok
      end
    end
  end
end

我已经阅读了api,帮助器的工作方式与“require and include”类似,但我不知道这里的真正区别。

谢谢!

1 个答案:

答案 0 :(得分:3)

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