我正在研究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”类似,但我不知道这里的真正区别。
谢谢!
答案 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