2014-03-26 19 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自動導入。 –

相關問題