2013-06-25 15 views
5

Ho bisogno di impostare un before_filter nel mio ApplicationController che reindirizza un utente se non hanno ancora accettato nuovi termini di servizio. Tuttavia, voglio limitare il filtro a funzionare solo in base al tipo di richiesta.before_filter nel controller dell'applicazione per ricevere solo le richieste

mi piacerebbe scrivere qualcosa del genere:

class ApplicationController 

before_filter :filter, :only => {:method => :get} 

è qualcosa di simile possibile?

risposta

8
before_filter :do_if_get 

private 

    def do_if_get 
    return unless request.get? 

    # your GET only stuff here. 
    end 

o più semplicemente

before_filter :get_filter, if: Proc.new {|c| request.get? } 

private 

    def get_filter 
    # your GET only stuff here. 
    end 
+0

Ci dovrebbe essere una virgola tra ': get_filter' e': if'. Ho cercato di modificare, ma SO richiede un cambio di sei caratteri minimo – aviemet

+0

Grazie, risolto. – deefour

0

Complimenti a deefours rispondere, questo lavoro anche con Sinatra::Request

before do 
    something if request.get? 
end 
Problemi correlati