Я пытаюсь настроить веб-сайт на основе 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) возвращают тот же фактический файл шаблона (это то, что я предполагаю).
Есть идеи, как обойти это?