i'm working on refinerycms, trying to add preview feature to news like pages, i'm trying to include my own helper to a controller, 'include' does not works, but 'helper' works.

sample code:

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

i've read the api, helper is working like 'require and include', but i don't know the real difference here.

thanks !

有帮助吗?

解决方案

helper LayoutHelper does include LayoutHelper, but it is included directly in the template class.

while include LayoutHelper, the module is included in the controller class.

You could check the source of 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top