2014-03-26 20 views
2

我正在炼油refinemscms,试图添加预览功能,像页面的新闻,我想包括我自己的帮手控制器,'包括'不起作用,但'助手'的作品。帮助程序和包含在控制器中的区别是什么?

示例代码:

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

我读过的API,辅助工作,如“要求,包括”,但我不知道这里的真正区别。

谢谢!

回答

1

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 
+0

我刚看到这个答案,我有一个跟进,如果你不介意的话xdazz。如果Rails已经'包含'app/views目录中的帮助程序目录中找到的文件,为什么您需要在控制器中使用关键字'helper'?我想你会一直想在控制器中包含(在这种情况下为LayoutHelper)。默认情况下,LayoutHelper应该已经可以在模板中访问。 –

+0

在回答上面的问题时,你可能有一个模块在/ helper中定义了NOT,但是在其他地方像/ lib那么它不会被Rails自动导入。 –

相关问题