2015-04-25 22 views
6

Sono entusiasta turbolinks3 (permette di eseguire il rendering solo parziali e non ricaricare tutto il corpo) Si può leggere di più su di esso da qui: https://github.com/rails/turbolinks/blob/master/CHANGELOG.md E 'incredibile, ma ho un problema: Nei browser che non supportano pushState (ad esempio, ad esempio 8/9), non so come gestire il comportamento. Mi danno questo errore su IE8:Turbolinks 3 e il rendering di una parziale

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

Il mio codice Controller è:

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 

'soluzione' A potrebbe essere che faccio:

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

Ma allora il problema è che risponda con un sacco di dati che non ho bisogno! (e il tempo di risposta è più grande) Quindi non voglio davvero trovare un'altra soluzione.

Come posso risolvere questo problema? Ho pensato di 2 soluzioni: 1) Utilizzare history.js/Modernizr per polyfill il pushState su vecchi browser

2) Trovare un modo per il controllo se la richiesta è fatta da turbolinks/pjax o no ... e utilizzare il rendering condizionato o redirect_to

  • ma non ho idea su come posso farlo, perché turbolinks non invia un'intestazione specifica come fa jquery-pjax

Qualche suggerimento? Lo apprezzo molto!

PS: per favore non suggerirmi backbone/angular/ember/react, li conosco già (backbone), ma voglio provare i turbolinks.

+0

Dove riesci a capirlo? – Mohamad

risposta

0

Il tuo primo istinto è giusto, con IE8 avrai bisogno di modernizzazione. il problema non è né il codice né i turbolinks, è IE8.

PS: Turbolinks non sostituisce effettivamente i framework JS, puoi usarlo perfettamente con uno di questi se lo desideri. L'ho usato con React e Angular. Turbolinks evita semplicemente di ricaricare la stessa cosa più volte (cosa che sembra già magica).