5

我正在慢慢地将我的 Rails 网站从传统的 Rails 往返每个视图应用程序转移到最终将基于单页 ember.js 的应用程序。作为此迁移的一部分,我分步进行,而不是将整个应用程序一次性迁移到单个页面应用程序,而是首先逐节迁移。

我被一个看似普遍的问题难住了。当我对 JSON 视图和 HTML 视图使用相同的控制器时,在 Chrome 中按回有时会显示 JSON 视图而不是 HTML 视图。

例如,我有一个端点 /portfolio/13,它是这些部分 ember.js 应用程序之一的入口点,它会导致 Ember Data 将 ID 为 #13 的 Portfolio 的 JSON 提取到与 application/ 相同的端点上json 作为 Accept: 标头。在向前导航到更深的页面后按返回将获得页面的 JSON 表示,而不是 HTML。

我是否需要强制 Ember Data 使用格式参数,以便 JSON 版本位于不同的 URL?如果是这样,如何做到这一点?

我究竟做错了什么?

4

2 回答 2

3

尝试在你的 Javascript 中添加这个:

$.ajaxSetup({cache: false});

它应该可以解决问题。但是,这里有些问题,因为默认情况下浏览器不缓存 JSON。这可能是因为内容类型错误,即 Rails 将 JSON 作为 HTML 提供。

于 2012-07-07T11:54:46.847 回答
1

您是否在 Rails 应用程序中将某些标头设置为“application/json”?您能否跟踪网络响应标头并查看内容类型:值?

“整个”页面是否显示为 JSON?(意思是不解析 HTML)

我曾经使用 sinatra 遇到过这个问题,而且我有一个(非常愚蠢):

before do 
    content_type 'application/json'
end

如果您希望浏览器正确显示,则所有 HTML 页面都必须为“text/html”。

在您的 Rails 应用程序的某些地方,这可能是您的问题。(但是为什么在ember之前没有遇到这个问题呢?)

于 2012-06-15T04:38:10.503 回答