2012-06-14 19 views
5

Tôi đang từ từ di chuyển trang web đường ray của mình từ ứng dụng chuyến đi khứ hồi cho mỗi lượt xem truyền thống sang một trang cuối cùng sẽ dựa trên trang ember.js. Là một phần của quá trình di chuyển này, tôi đang thực hiện theo các bước và không di chuyển toàn bộ ứng dụng trong một lần tới một ứng dụng trang nhưng từng phần theo phần lúc đầu.JSON được hiển thị thay vì HTML cho chế độ xem đường ray bằng cách sử dụng ember.js

Tôi đang bối rối về một vấn đề có vẻ chung chung. Khi tôi sử dụng cùng một bộ điều khiển cho chế độ xem JSON cũng như chế độ xem HTML, việc nhấn lại trong Chrome đôi khi hiển thị cho tôi chế độ xem JSON thay vì chế độ xem HTML. Ví dụ: Tôi có điểm cuối/danh mục/13, là điểm nhập vào một trong các ứng dụng ember.js phần này và làm cho dữ liệu Ember kéo JSON cho Danh mục đầu tư với id # 13 trên cùng điểm cuối với ứng dụng/json làm tiêu đề Accept:. Nhấn lùi sau khi chuyển tiếp sang trang sâu hơn sẽ nhận được biểu diễn JSON của trang thay vì HTML.

Tôi có cần buộc dữ liệu Ember sử dụng thông số định dạng sao cho phiên bản JSON có ở một URL khác không? Nếu vậy, làm thế nào để làm điều đó?

Tôi đang làm gì sai?

+0

tôi có thể "sửa" điều này bằng cách điều chỉnh url.push (hậu tố) thành url.push (hậu tố + ".json") trong nguồn dữ liệu Ember trong buildURL nhưng rõ ràng đây không phải là lý tưởng. – outside2344

+0

Bạn cần theo dõi và mô tả những gì xảy ra ở cấp HTTP khi bạn nhấn nút quay lại để tạo ra hành vi không mong muốn. Nó có thể là bạn đang gặp phải một số loại vấn đề bộ nhớ cache lấy tài nguyên? Một dấu vết HTTP đầy đủ sẽ tiết lộ tất cả. –

+0

Tôi chắc chắn đang gặp sự cố bộ nhớ cache. Chrome đang phân phát lại phiên bản JSON được lưu trong bộ nhớ cache thay vì phiên bản HTML. – outside2344

Trả lời

3

Hãy thử thêm một nơi nào đó trong Javascript của bạn:

$.ajaxSetup({cache: false}); 

Cần khắc phục vấn đề. Tuy nhiên, có điều gì đó sai ở đây, bởi vì các trình duyệt mặc định không cache JSON. Có lẽ, điều này là do loại nội dung sai, đó là, Rails đang phân phối JSON dưới dạng HTML.

+0

yup - tôi đã làm một cái gì đó như thế và nó dường như giải quyết nó. nói rằng, việc nâng cấp ember.js lên trước 1.0 đã sửa lỗi này cho tôi vì vậy tôi nghi ngờ đó là vấn đề trong ember.js ở đâu đó. – outside2344

+0

Nhận xét khác về giải pháp này tại lỗi Chromium: https://code.google.com/p/chromium/issues/detail?id=108766 và chuỗi ban đầu đã bắt đầu cuộc thảo luận: https://groups.google. com/forum/#! topic/góc cạnh/N4etYJwL63c – David

1

Bạn có một số tiêu đề được đặt là "ứng dụng/json" trong ứng dụng đường ray của bạn không? Bạn có thể theo dõi các tiêu đề phản hồi mạng và xem giá trị loại nội dung: không?

Trang "toàn bộ" có hiển thị dưới dạng JSON không? (Có nghĩa là không phân tích cú pháp HTML)

Tôi có vấn đề này một lần sử dụng Sinatra và tôi đã có một (rất ngu ngốc):

before do 
    content_type 'application/json' 
end 

Nếu bạn muốn trình duyệt của bạn để hiển thị một cách chính xác, nó đã được 'text/html 'cho tất cả các trang HTML của bạn.

Đây có thể là sự cố của bạn tại một số địa điểm trong ứng dụng đường ray của bạn. (Nhưng tại sao có không có vấn đề này trước khi ember?)

+0

xin lỗi - tôi phải nói rằng tôi đã nhận được phiên bản JSON của tài nguyên thay vì phiên bản HTML của trang (có cùng URL). Có lẽ tôi cần phải ép buộc dữ liệu Ember sử dụng tham số định dạng sao cho phiên bản JSON ở một URL khác? Nếu vậy, bất cứ ai biết làm thế nào để làm điều đó? – outside2344

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