2015-04-25 14 views
6

render Turbolinks3 hakkında heyecanlıyım (bu sadece bir kısmi render yapmanıza ve tüm vücudu yeniden yüklemenize izin vermez) Buradan daha fazla bilgi edinebilirsiniz: https://github.com/rails/turbolinks/blob/master/CHANGELOG.md Bu harika ama ben bir Sorun: PushState'ı desteklemeyen tarayıcılarda (örnek ie8/9), davranışı nasıl yöneteceğimi bilmiyorum.Turbolinks 3 ve kısmi bir

Could not set the innerHTML property. Invalid target element for this operation. 

Benim Kontrolör kodudur:

def create 
    @post = Post.find(params[:post_id]) 

    if @post.comments.create(comment_params) 
     render '_comment', change: [:comments, :super_test], layout: false, :locals => { comment: @post.comments.last } 
    else 
     render json:'error' 
    end 
    end 

bir 'çözüm' benim yaptığım o olabilir: Bu IE8 üzerinde bana bu hata vermek

redirect_to @post, change: [:comments, :super_test] 

Ama sonra sorundur İhtiyacım olmayan bir çok veriye cevap vermesi (ve tepki süresi daha büyüktür) Bu yüzden başka bir çözüm bulmak istemem.

Bu sorunu nasıl çözebilirim? Ben yaklaşık 2 çözüm düşündüm: 1) gibi yok eğer (eski tarayıcılarda

  • üzerine Polyfill için pushState history.js/modernizr kullanın Ama denedim ama her zaman aynı hatayı alıyorum' t var modernizr)

    Web hata ayrıntıları

    User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64'ni; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Zaman Damgası: Cts, 25 Nis 2015 17:28:52 UT C

    Mesaj: innerHTML özelliğini belirlenemedi. Bu işlem için geçersiz hedef öğe. Satır: 26 Char: 30464 Kodu: 0 URI: istek turbolinks/pjax yapılır olup olmadığını kontrol için bir yol bulun ... ve koşullu hale veya redirect_to kullanmak https://stark-forest-5974.herokuapp.com/assets/application-83a3aa4fd4a1ee124da87760bfdca86febd4fc1cb8a13167c892a15ce3caa53d.js

2)

  • Ama turbolinks belirli başlık jquery-pjax
yaptığı gibi göndermez çünkü, bunu nasıl yapacağınıza ilişkin fikir değil ettikHerhangi bir öneriniz var mı? Gerçekten onu takdir ederim!

PS: Lütfen bana omurga/açısal/ember/tepki önerme, onları zaten tanıyorum (omurga), ama turbolinks denemek istiyorum.

+0

Bunu nereden bulabiliyorsunuz? – Mohamad

cevap

0

İlk içgüdüünüz doğru, IE8 ile modernizr'e ihtiyacınız olacak. Sorun burada kod ya da turbolinks değil, IE8.

Not: Turbolinks aslında JS çerçevelerini değiştirmiyor, isterseniz bunlardan biriyle mükemmel şekilde kullanabilirsiniz. React ve Angular ile kullandım. Turbolinks, aynı şeyi birkaç kez tekrar yüklemekten kaçınıyor (zaten sihir olduğunu hissediyor).