2015-01-01 157 views
0

是否可以通過關注添加控制器動作?包括軌道控制器的動作

我想包括通過關注一個控制器動作,但它是沒有得到發現:

module Wizbang 
    module ActsAsWizbang 
    extend ActiveSupport::Concern 

    included do 

     def foo 
     # do something 
     end 
    end 
end 

我已經添加了approprioate路線我的路線文件,但它無法找到在行動控制器。

當我包括在我的控制器這段代碼

class SimpleController < ApplicationController 

    include Wizbang::ActsAsWizbang 

end 

我收到消息:

The action 'foo' could not be found for SimpleController.

回答

2

如果你要定義的方法混入類,只需在定義它們模塊。他們不進去included塊:

module Wizbang 
    module ActsAsWizbang 
    extend ActiveSupport::Concern 

    def foo 
     # do something 
    end 
    end 
end 
+0

我試過這個,我仍然得到相同的錯誤。 – Doug

+0

如果它應該是一個類方法(這是錯誤的建議),那麼你不需要將'def foo'塊封裝在一個'ClassMethods'模塊中嗎? –

+1

@SteveRowley錯誤信息確實沒有提示**。控制器操作必須是實例方法,而不是類方法。該錯誤消息指出'SimpleController'上沒有定義實例方法'foo'。 – meagar