2015-05-11 12 views
8

Mi chiedo perché non ci sia un doppio rendering quando c'è un redirect_to o render in before_action. Considerate questo esempio:Perché non esiste un doppio rendering quando si usa before_action?

class SomeController < ApplicationController 
before_action :callback 

def new 
    callback2 
    render 'new' 
end 

def callback 
    render 'new' 
end 

def callback2 
    render 'new' 
end 

end 

Vedo che before_action sarà inutile se non può reindirizzare, ma come è fatta? Se commento lo before_action, genererà un'eccezione. Come è implementato lo before_action per non causare il doppio rendering?

+0

Non sono sicuro di aver compreso correttamente la domanda, ma se lo faccio, non c'è il doppio rendering perché non è stato ancora eseguito il rendering. Credo che 'before_action' stia cambiando ciò che sarà reso. –

+0

Se si imposta callback: before_action, questo viene chiamato prima di caricare un'azione nel codice quando lo si chiama, il callback render 'nuovo' prima di caricare la nuova azione, sto usando la parola di caricamento per capirlo meglio –

+0

Come posso implementare il mio possedere 'before_action'? Ho messo l'esempio con 'callback2' per illustrare che senza' before_action' ci sarà il doppio rendering. – Marii

risposta

15

Vedere il Rails Guide on controllers:

Se un "prima" del filtro rende o comandi di reindirizzamento, l'azione non verrà eseguito. Se ci sono altri filtri programmati per essere eseguiti dopo quel filtro, vengono anche cancellati.

Problemi correlati