2015-01-09 15 views
16

Ich möchte 'before_action' in einem Modul verwenden.So verwenden Sie 'before_action' in einem Modul

Leider konnte ich es nicht funktionieren.

Ich war googleing, aber alles, was ich fand, konnte das Problem nicht lösen.

Meine Moduldatei sieht wie folgt aus:

module ShowController 
    include SimpleController 
    #before_action :set_object, only: [:show] 

    def show 
    set_object 
    end 
end 

Ich möchte die auskommen before_action Linie anstelle der Show-Methode verwenden.

Deshalb habe ich versucht, die folgenden Module enthalten:

include AbstractController::Callbacks 
    include ActiveSupport::Callbacks 
    include ActiveSupport::Concern 
    include ActiveSupport 

Außerdem habe ich versucht, oder die core_ext zu " 'active_support/all' erfordern".

Die error_message I erhalten ist:

undefined method `class_attribute' for SimpleController::ShowController:Module 

schließlich nichts geklappt und ich habe nicht eine Lösung finden.

Antwort

25

Ich denke, das ist das, was Sie zu tun versuchen:

class SomeController < ActionController::Base 
    include SimpleController 
end 

module SimpleController 
    extend ActiveSupport::Concern 

    included do 
    before_action :set_object, only: [:show] 
    end 
end 
Verwandte Themen