2012-06-14 14 views
5

Muevo lentamente el sitio web de mis rieles de una aplicación de carriles de ida y vuelta para cada vista a uno que finalmente estará basado en una sola página de ember.js. Como parte de esta migración, lo hago por etapas y no migro la aplicación completa de una sola vez a una aplicación de una sola página, pero sección por sección al principio.Se muestra JSON en lugar de HTML para la vista de carriles usando ember.js

Estoy atascado en un problema que parece general. Cuando uso el mismo controlador para las vistas JSON y las vistas HTML, presionar nuevamente en Chrome ocasionalmente me muestra la vista JSON en lugar de la vista HTML.

Por ejemplo, tengo un punto final/portfolio/13, que es el punto de entrada en una de estas aplicaciones ember.js de sección y que hace que Ember Data extraiga el JSON para Portafolio con el ID de # 13 sobre el mismo punto final con application/json como el encabezado Accept :. Presionando hacia atrás luego de navegar hacia adelante a una página más profunda obtendrá la representación JSON de la página en lugar del HTML.

¿Debo forzar que Ember Data use el parámetro de formato para que la versión de JSON esté en una URL diferente? Si es así, ¿cómo se hace eso?

¿Qué estoy haciendo mal?

+0

puedo "arreglarlo" ajustando el url.push (sufijo) a url.push (sufijo + ".json") en la fuente de Ember Data en buildURL, pero obviamente esto no es ideal. – outside2344

+0

Necesita supervisar y describir lo que sucede en el nivel HTTP cuando presiona el botón Atrás para producir el comportamiento no deseado. ¿Podría ser que estás encontrando algún tipo de problema de caché para recuperar el recurso? Una traza HTTP completa debería revelar todo. –

+0

Definitivamente estoy llegando a un problema de caché. Chrome está publicando la versión JSON en caché en lugar de la versión HTML. – outside2344

Respuesta

3

Trate de añadir esto en alguna parte en su Javascript:

$.ajaxSetup({cache: false}); 

Debe solucionar el problema. Sin embargo, algo está mal aquí, porque los navegadores predeterminados no almacenan en caché JSON. Probablemente, esto se debe al tipo de contenido incorrecto, es decir, Rails está sirviendo JSON como HTML.

+0

yup - hice algo así y pareció resolverlo. Dicho eso, actualizar ember.js a pre-1.0 solucionó esto por mí, así que sospecho que fue un problema en ember.js en algún lugar. – outside2344

+0

Más comentarios sobre esta solución en una falla de Chromium: https://code.google.com/p/chromium/issues/detail?id=108766 y el hilo original que dio inicio a la discusión: https://groups.google. com/forum/#! topic/angular/N4etYJwL63c – David

1

¿Tiene algunos encabezados configurados como "aplicación/json" en su aplicación de rieles? ¿Podría rastrear los encabezados de respuesta de red y ver el tipo de contenido: valor?

¿La página "completa" se visualiza como JSON? (HTML es decir, no de análisis)

tuve este problema de una vez usando Sinatra y que tenía una (muy estúpida):

before do 
    content_type 'application/json' 
end 

si desea que su navegador para visualizar correctamente, tiene que ser 'text/html 'para todas sus páginas HTML.

Puede ser su problema en algunos lugares en su aplicación de rieles. (¿Por qué no ha tenido este problema antes brasa?)

+0

lo siento - debería haber dicho que estaba obteniendo la versión JSON del recurso en lugar de la versión HTML de la página (que tiene la misma URL). ¿Quizás necesite forzar a Ember Data a usar el parámetro de formato de modo que la versión de JSON esté en una URL diferente? Si es así, ¿alguien sabe cómo hacer eso? – outside2344

Cuestiones relacionadas