【发布时间】:2011-04-28 09:24:10
【问题描述】:
我正在尝试设置一个基于 ajax 的网站,当给出 GET 变量和 HTTP 标头的特定组合时,该网站会加载网页的片段。
GET /normal/html/page?ajax=true
X-ajax: true
我在控制器中设置的是:
before_filter do |controller|
if request_by_ajax?
ApplicationController.layout false
end
end
这有效,但仅限于开发模式。您会看到,当我尝试访问给定页面时,它只会提供碎片化(无布局)页面。
当没有ajax访问普通页面时:
GET /normal/html/page
这只会返回该页面的视图,而不是它周围的布局。但是,如果我在重新加载网络服务器时访问该页面,那么它会返回布局,然后当它通过 AJAX 访问时,它会返回布局 + 视图。显然这里存在缓存问题。
我真的很想为页面保持相同的路线。如果有 ajax 调用,那么我更愿意根据查询字符串和请求标头值找出响应。但是 Rails 更喜欢将查询字符串参数和请求标头分类为在提供文件时(即 /normal/html/page 和 /normal/html/page?ajax=true)返回相同的实际模板文件(这是我假设的)。
知道如何解决这个问题吗?
【问题讨论】:
标签: ruby-on-rails ruby ajax http caching