Я почти думаю, что это может быть ошибка в Rails.Проверьте этот блок кода в строке 143 actionpack/lib/action_controller/caching/actions.rb
:
body = controller.read_fragment(cache_path.path, @store_options)
unless body
controller.action_has_layout = false unless @cache_layout
yield
controller.action_has_layout = true
body = controller._save_fragment(cache_path.path, @store_options)
end
body = controller.render_to_string(:text => body, :layout => true) unless @cache_layout
controller.response_body = body
Похоже, что он правильно отображает тело без макета в первом блоке unless
, но затемон заставляет шаблон отображать с макетом как частью тела ответа.И если вы посмотрите на трассировку стека, это строка, которая приводит к исключению.
Я вручную отредактировал файл в :layout => @cache_layout
(который всегда оценивается в :layout => false
, поскольку он защищен unless
)и представление отображается так, как ожидалось.
Я не уверен, что вы могли бы сделать с этим, кроме как временно исправить этот файл самостоятельно и открыть отчет об ошибке.Я также могу ошибаться в отношении поведения этой строки, но она определенно выглядит как виновник.