我正在将一个通过 URL 加载新 View 的 Rails 应用程序移动到一个完全 AJAX 版本。我们这样做的方式是通过 AJAX 加载所有 View 并通过 HTML5 History API 更改 URL。我们还希望在整个过程中使用 HTTP 缓存,以便我们可以缓存每个部分。
但现在我们陷入了一个问题。现在基本上有两种加载每个页面的方法 - 通过 URL 或通过单击通过 AJAX 加载该部分的内容。但这导致我们创建了两种不同的 View 和 Controller 来加载相同的内容——一种直接从 URL 加载,另一种通过单击主页并通过 AJAX 和历史 API 加载。那么,当直接通过 URL 和 AJAX 加载时,我们如何确保从浏览器缓存中加载相同的 View ?
举个例子,GitHub 在他们的树 slider 中使用。您可以通过在窗口中浏览代码或直接使用它的 URL 路径来直接访问代码。我确定该页面之前是否已加载,他们会从浏览器缓存中获取部分内容。
有没有办法向相同的 URL 发送请求,但只呈现部分页面或加载整个页面,具体取决于请求是通过单击选项卡发送还是在地址栏中输入?如果它们已经存在于浏览器中,它应该使用缓存的部分。
谢谢
最佳答案
如果我没看错,你希望对同一个 Action 有不同的行为,一种是 get 请求,另一种是 ajax 请求。
你可以这样做:
我的页面 Controller .rb
def my_page
...(your logic here)
respond_to do |format|
format.js
format.html
end
end
我的页面.js.erb
alert('testing');
.... (further ajax code here)
这是一篇执行此行为的文章 Rails 4: How to partials & AJAX, dead easy
通过这种方式,您可以对 ajax 进行相同的响应并获取请求
关于ruby-on-rails - Rails 4 中的 AJAX、HTML5 历史 API 和缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24649472/