2010-02-10 16 views
16

Per gli esperti di guide là fuori mi chiedevo dove/come si eseguirà lo stesso codice per ogni azione nella propria applicazione web? Se puoi indicarmi un articolo o fornire uno snippet di codice breve, lo apprezzerei molto.Rails ActionController esegue lo stesso codice per ogni azione

Grazie in anticipo a tutti coloro che possono aiutare.

+0

Ogni azione in un singolo controller? –

risposta

30

utilizza un filtro nella vostra ApplicationController per eseguire il codice per ogni azione nell'applicazione . Tutti i controller scendono da ApplicationController, quindi inserire il filtro assicurerà che il filtro venga eseguito.

class ApplicationController 
    before_filter :verify_security_token 
    def verify_security_token; puts "Run"; end; 
end 
15

Mi sembra che stiate parlando di filters.

class MyController < ActionController::Base 
    before_filter :execute_this_for_every_action 

    def index 
    @foo = @bar 
    end 

    def new 
    @foo = @bar.to_s 
    end 

    def execute_this_for_every_action 
    @bar = :baz 
    end 
end 

È possibile inserire il filtro anche su ApplicationController, se si desidera che tutti i controller lo eseguano.

2
  • before_filter se si desidera che il codice venga eseguito "prima" di ogni azione.

  • Se si desidera che l'azione venga dichiarata ogni volta che la si utilizza, è possibile inserirla in ApplicationController e chiamare il metodo in qualsiasi controller.

Un altro approccio è quello di utilizzare gli helper come:

module PersonHelper 
    def eat 
    {.. some code ..} 
    end 
end 

E nel controller:

class MyController < ActionController::Base 
    include PersonHelper 

    def index 
    eat 
    end 
end 
Problemi correlati