Sha256: cec5329d37344e4a2b14d799a08e53d6de825e804f90dfc0c10e59cf54283fb0

Contents?: true

Size: 1.2 KB

Versions: 12

Compression:

Stored size: 1.2 KB

Contents

# Turbo frame requests are requests made from within a turbo frame with the intention of replacing the content of just
# that frame, not the whole page. They are automatically tagged as such by the Turbo Frame JavaScript, which adds a
# <tt>Turbo-Frame</tt> header to the request. When that header is detected by the controller, we ensure that any
# template layout is skipped (since we're only working on an in-page frame, thus can skip the weight of the layout), and
# that the etag for the page is changed (such that a cache for a layout-less request isn't served on a normal request
# and vice versa).
#
# This is merely a rendering optimization. Everything would still work just fine if we rendered everything including the layout.
# Turbo Frames knows how to fish out the relevant frame regardless.
#
# This module is automatically included in <tt>ActionController::Base</tt>.
module Turbo::Frames::FrameRequest
  extend ActiveSupport::Concern

  included do
    layout -> { false if turbo_frame_request? }
    etag { :frame if turbo_frame_request? }
  end

  private
    def turbo_frame_request?
      turbo_frame_request_id.present?
    end

    def turbo_frame_request_id
      request.headers["Turbo-Frame"]
    end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
turbo-rails-1.3.3 app/controllers/turbo/frames/frame_request.rb
turbo-rails-1.3.2 app/controllers/turbo/frames/frame_request.rb
turbo-rails-1.3.1 app/controllers/turbo/frames/frame_request.rb
turbo-rails-1.3.0 app/controllers/turbo/frames/frame_request.rb
turbo-rails-1.1.1 app/controllers/turbo/frames/frame_request.rb
turbo-rails-1.1.0 app/controllers/turbo/frames/frame_request.rb
turbo-rails-1.0.1 app/controllers/turbo/frames/frame_request.rb
turbo-rails-1.0.0 app/controllers/turbo/frames/frame_request.rb
turbo-rails-0.9.1 app/controllers/turbo/frames/frame_request.rb
turbo-rails-0.9.0 app/controllers/turbo/frames/frame_request.rb
turbo-rails-0.8.3 app/controllers/turbo/frames/frame_request.rb
turbo-rails-0.8.2 app/controllers/turbo/frames/frame_request.rb