Sha256: c3d0a5702575f0935e607460b8c594344c84eafbd3be662b311b8b17ebfa727e

Contents?: true

Size: 1012 Bytes

Versions: 5

Compression:

Stored size: 1012 Bytes

Contents

module Pjax
  extend ActiveSupport::Concern

  included do
    layout proc { |c| pjax_request? ? pjax_layout : 'application' }
    helper_method :pjax_request?

    before_filter :strip_pjax_param, :if => :pjax_request?
    before_filter :set_pjax_url,     :if => :pjax_request?
  end

  protected
    def pjax_request?
      env['HTTP_X_PJAX'].present?
    end

    def pjax_layout
      false
    end

    def pjax_container
      return unless pjax_request?
      request.headers['X-PJAX-Container']
    end

    def strip_pjax_param
      params.delete(:_pjax)
      request.env['QUERY_STRING'].sub!(/_pjax=[^&]+&?/, '')

      request.env.delete('rack.request.query_string')
      request.env.delete('rack.request.query_hash')
      request.env.delete('action_dispatch.request.query_parameters')

      request.instance_variable_set('@original_fullpath', nil)
      request.instance_variable_set('@fullpath', nil)
    end

    def set_pjax_url
      response.headers['X-PJAX-URL'] = request.url
    end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
pjax_rails-0.2.2 lib/pjax.rb
pjax_rails-0.2.1 ./lib/pjax.rb
rails-pjax-0.0.2 ./lib/pjax.rb
rails-pjax-0.0.1 ./lib/pjax.rb
pjax_rails-0.2.0 ./lib/pjax.rb