2015-04-25 19 views
6

Tôi rất vui mừng về turbolinks3 (nó cho phép bạn chỉ hiển thị một phần và không tải lại tất cả phần thân) Bạn có thể đọc thêm về nó tại đây: https://github.com/rails/turbolinks/blob/master/CHANGELOG.md Thật tuyệt vời nhưng tôi đã vấn đề: Trong các trình duyệt không hỗ trợ pushState (ví dụ ie8/9), tôi không biết cách quản lý hành vi. Nó cho tôi lỗi này trên IE8:Turbolinks 3 và hiển thị một phần

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

đang điều khiển của tôi là:

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 

A 'giải pháp' Có thể là tôi làm:

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

Nhưng rồi vấn đề là rằng nó trả lời với rất nhiều dữ liệu mà tôi không cần! (và thời gian phản ứng lớn hơn) Vì vậy, tôi reallt muốn tìm một giải pháp khác.

Tôi có thể giải quyết vấn đề này như thế nào? Tôi đã nghĩ về 2 giải pháp: 1) Sử dụng history.js/Modernizr cho polyfill các pushState trên các trình duyệt cũ

  • Nhưng tôi đã cố gắng nhưng tôi luôn luôn nhận được lỗi tương tự (như nếu tôi don' t có Modernizr)

    chi tiết lỗi trang web

    User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Dấu thời gian: Thứ bảy, 25 tháng 4 năm 2015 17:28:52 UT C

    Thông báo: Không thể đặt thuộc tính innerHTML. Phần tử mục tiêu không hợp lệ cho thao tác này. Line: 26 Char: 30.464 Code: 0 URI: https://stark-forest-5974.herokuapp.com/assets/application-83a3aa4fd4a1ee124da87760bfdca86febd4fc1cb8a13167c892a15ce3caa53d.js

2) Tìm một cách để kiểm tra nếu yêu cầu được thực hiện bằng cách turbolinks/pjax hay không ... và sử dụng có điều kiện render hay redirect_to

  • Nhưng tôi không đã có ý tưởng về làm thế nào tôi có thể làm điều đó, bởi vì turbolinks không gửi một tiêu đề cụ thể như làm jquery-pjax

Mọi đề xuất? Tôi rất trân trọng điều này!

PS: Xin đừng đề nghị tôi xương sống/góc/ember/phản ứng, tôi đã biết chúng (xương sống), nhưng tôi muốn thử turbolinks.

+0

Bạn có thể tìm ra điều này ở đâu? – Mohamad

Trả lời

0

Bản năng đầu tiên của bạn là đúng, với IE8 bạn sẽ cần modernizr. vấn đề không phải là bạn mã hoặc turbolinks ở đây, đó là IE8.

PS: Turbolinks không thực sự thay thế các khung công tác JS, bạn hoàn toàn có thể sử dụng nó với một trong số chúng nếu bạn muốn. Tôi đã sử dụng nó với React và Angular. Turbolinks chỉ tránh tải lại những thứ tương tự nhiều lần (mà cảm thấy đã được phép thuật).

Các vấn đề liên quan