【发布时间】:2012-06-14 22:01:39
【问题描述】:
我正在慢慢地将我的 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?如果是这样,如何做到这一点?
我做错了什么?
【问题讨论】:
-
我可以通过将 buildURL 中 Ember 数据源中的 url.push(suffix) 调整为 url.push(suffix + ".json") 来“解决”这个问题,但显然这并不理想。
-
您需要监控并描述当您点击返回按钮以产生不需要的行为时在 HTTP 级别发生的情况。可能是您在检索资源时遇到了某种缓存问题吗?完整的 HTTP 跟踪应该会显示所有内容。
-
我肯定遇到了缓存问题。 Chrome 正在返回缓存的 JSON 版本而不是 HTML 版本。
-
您能否使用 HTTP GET 请求(包括所有标头)更新您希望检索 HTML 表示的请求的问题?
-
我可以通过将 url.push(suffix) 调整为 url.push(suffix + ".json") 来“解决”这个问题
- 这将是明智的解决方案,因为 URL 将保持一致,并且仍然可以缓存。
标签: ruby-on-rails ember.js ember-data