2012-07-02 11 views
12

Bu araştırmayı yapmam ve bu tür bir mekanik için bir çözüm bulamadık. Tüm sayfaları normalde Rails'e yüklemek istiyorum, ama ajax isteğinde bulunduğumda sadece sayfayı sayfa düzeni olmadan döndürmek istiyorum. Yani bir ajax requst yaptığım her zaman bir ?page=true veya bu satırlar boyunca bir şey ekleyebilir ve Rails sadece sayfa düzeni olmadan döndürür.Raylar AJAX talebi sırasında düzeni engeller.

Bu mümkün mü? Bunu kaçırmamın daha iyi bir yolu var mı?

Yardımlarınız için teşekkürler!

Nihai Çözüm Çalışma Kodu: denetleyici olarak

Eğer respond_to blokta format.html biraz mantık eklemek yapmanız gereken.

örnek

def show 
    # code beforehand 

    respond_to do |format| 
     format.html { render :layout => !request.xhr? } 
     # other formats 
    end 
end 

için show yöntemde

Ve o kadar! AJAX istekleri sırasında düzenleri önlemek!

Not: Smathy'nin cevabına yaptığı yorum sayesinde bu daha da basitleştirildi. Ben aslında format.html { render :layout => nil if request.xhr? } vardı Bu çözüm de iyi çalışır, ancak smathy'nin değişiklik daha da basit tutar.

+0

Her ajax isteği için uygulama denetleyicisinde aynı şeyi yapmak mümkün müdür? –

+0

olası bir kopyası [xhrs'a göre bir düzen oluşturma] (http://stackoverflow.com/questions/2444866/never-render-a-layout-in-response-to-xhrs) – fivedigit

cevap

8

Bu parametreyi eklemeniz gerekmez, Ajax isteği olduğunda request.xhr? denetleyicinizde doğru olarak dönecektir. Sadece düzeni oluşturup oluşturmayacağınıza karar vermek için kullanın.

+0

Bu nasıl çalışır? Eğer request.xhr denedim? render: layout => show denetleyicisinde nil sonu. Bir hata döndürüyor. Ya request.xhr kullanmıyorum? doğru ya da düzeni yanlış şekilde kaldırmaya çalışıyorum. – KayoticSully

+1

Bunu anlayabildim, bilgi için sizi TEŞEKKÜR EDERİM. Soruyu gerçek son çalışma kodumla düzenleyeceğim. Bilgileriniz sayesinde, çözümüm çok "Rails Like" ve bununla son derece mutluyum! – KayoticSully

+3

Güzel çözüm, evet. Bir alternatif, booleanın kendisini kullanmaktır - ama reddedilir. Örneğin. Yaparım: 'render: layout =>! Request.xhr?' – smathy