Ho cercato in giro e non sono stato in grado di trovare una soluzione per questo tipo di meccanico. Voglio caricare tutte le pagine normalmente in Rails, ma ogni volta che faccio una richiesta Ajax voglio solo restituire la pagina senza il layout. Quindi, ogni volta che faccio un requst ajax, posso aggiungere uno ?page=true
o qualcosa del genere e fare in modo che Rails restituisca la pagina senza il layout.I binari impediscono il layout durante la richiesta AJAX
È possibile? C'è un modo migliore per farlo che mi manca?
Grazie per qualsiasi aiuto!
Soluzione Finale Codice lavoro:
Nel regolatore di tutto quello che dovete fare è aggiungere un po 'di logica al format.html
nel blocco respond_to
.
Nel metodo show
ad esempio
def show
# code beforehand
respond_to do |format|
format.html { render :layout => !request.xhr? }
# other formats
end
end
E questo è tutto! Impedisci layout durante le richieste AJAX!
Nota: Grazie al commento di Smathy sulla sua risposta questo è stato ulteriormente semplificato. Originariamente avevo format.html { render :layout => nil if request.xhr? }
Questa soluzione funziona altrettanto bene, ma la modifica di Smathy lo rende ancora più semplice.
È possibile fare lo stesso nel controller dell'applicazione per ogni richiesta Ajax? –
possibile duplicato di [Non eseguire mai il rendering di un layout in risposta a xhrs] (http://stackoverflow.com/questions/2444866/never-render-a-layout-in-response-to-xhrs) – fivedigit