2013-08-09 12 views
7

olup olmadığını kontrol edin Turbolinks gemini kullanan bir Ruby on Rails 4 uygulaması geliştiriyorum. Bir bağlantı tıklandığında, düzen hala sunucu tarafında oluşturulduğunu fark ettim, ancak Turbolinks JavaScript, bu işlenmiş içeriğin yalnızca gövdesini çekiyor. Sorum şu: Kontrolör tarafında ise, Turbolinks üzerinden bir talepte bulunup bulunmadığını belirlemek mümkün. Temelde, Turbolinks üzerinden bir istek yapıldığında, gerekli olmayan kodun yürütülmemesi için düzeni yanlış olarak ayarlamak istiyorum. o Turbolinks geldiğinde ancak bir şey yapmak için görünmüyor, ben jQuery ile AJAX isteği yaparsanızRaylar Denetimi Turbolinks İsteği

# Don't use layout when AJAX request 
layout proc { |controller| controller.request.xhr? ? false: "application" } 

Bu kod başlığını render gelen bir AJAX isteği engeller: my ApplicationController ben zaten şu kodu var .

+0

Bir düzen olmadan render yapmak Turbolinks işlemini bozmaz mı? Turbolinks (alıntı): 'geçerli sayfa örneğini canlı tutmaya ve sadece gövdeyi ve başlığın başını değiştirir'. Dolayısıyla, Turbolinks'in gönderilecek olan tam sayfa düzenine bağlı olduğu anlaşılıyor. – zwippie

cevap

0

Bu bir korsanlık olsa da, "X-XHR-Referer" başlığını kontrol etmenin hileyi yaptığı görülüyor.

unless request.headers["X-XHR-Referer"].present? 
    do_some_stuff 
end 

Turbolinks, bazı yönlendirme işlemleri için üstbilgiyi ekliyor gibi görünüyor. Bu gelecekte olsa değişebilir.

+0

Bir süre önce bunu başarmak için kendi püsküllük Turbolinks versiyonunu uyguladım, ancak bazen tarayıcının arka tuşunu kullanırken bir sayfanın gövdesi olmadan işleneceğini ve şeylerin korkunç görüneceğini fark ettim. Çabucak çabaya değmediğine çabucak karar verdim ve sadece ihtiyaçlarım için PJAX veya standart AJAX kullanmalıyım. Ama paylaşım için teşekkürler. –

İlgili konular