2015-04-25 9 views
6

Ich bin begeistert über turbolinks3 (ermöglicht es Ihnen, nur ein Teil zu machen und die ganzen Körpers nicht nachladen) Sie hier mehr darüber zu lesen: https://github.com/rails/turbolinks/blob/master/CHANGELOG.md Es ist erstaunlich, aber ich habe eine Problem: In Browsern, die nicht unterstützt PushState (Beispiel ie8/9), ich weiß nicht, wie das Verhalten zu verwalten. Es gib mir diesen Fehler auf IE8:Turbolinks 3 und macht ein teilweise

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

Mein Controller-Code ist:

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 

Eine 'Lösung' könnte sein, dass ich tun:

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

Aber dann ist das Problem dass es mit vielen Daten antwortet, die ich nicht benötige! (und die Antwortzeit ist größer) Also möchte ich eine andere Lösung finden.

Wie kann ich dieses Problem lösen? Ich habe über 2 Lösung gedacht: 1) Verwenden Sie history.js/modernizr für polyfill die auf pushstate alten Browsern

2) für die Prüfung einen Weg finden, wenn der Antrag von turbolinks/pjax getan wird oder nicht ... und bedingtes verwenden machen oder redirect_to

  • Aber ich habe nicht Idee, wie ich es tun kann, weil turbolinks nicht wie funktioniert eine bestimmte Header sendet jquery-pjax

Irgendwelche Vorschläge? Ich schätze das wirklich!

PS: Bitte schlagen Sie mir nicht Backbone/angular/ember/reagieren, ich kenne sie bereits (Backbone), aber ich will versuchen Turbolinks.

+0

Wo können Sie das herausfinden? – Mohamad

Antwort

0

Ihr erster Instinkt ist richtig, mit IE8 brauchen Sie moderniszr. Das Problem ist weder Code noch Turbolinks hier, es ist IE8.

PS: Turbolinks ersetzt nicht wirklich JS-Frameworks, Sie können es perfekt mit einem von ihnen verwenden, wenn Sie möchten. Ich habe es mit React und Angular verwendet. Turbolinks verhindert einfach das mehrfache erneute Laden (was sich schon magisch anfühlt).