Sha256: b85c46c3c5b3cc63f19557917a1f70a2b70a55fa5748283cd0ff5761a4a39c82
Contents?: true
Size: 1.51 KB
Versions: 3
Compression:
Stored size: 1.51 KB
Contents
module Pjax extend ActiveSupport::Concern included do layout proc { |c| pjax_request? ? pjax_layout : 'application' } helper_method :pjax_request? rescue_from Pjax::Unsupported, :with => :pjax_unsupported before_filter :strip_pjax_param, :if => :pjax_request? before_filter :set_pjax_url, :if => :pjax_request? end class Error < StandardError; end class Unsupported < Error; 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 pjax_unsupported head :not_acceptable end # Call in a before_filter or in an action to disable pjax on an action. # # Examples # # before_filter :prevent_pjax! # # def login # prevent_pjax! # # ... # end # def prevent_pjax! raise Pjax::Unsupported if pjax_request? end def strip_pjax_param params.delete(:_pjax) request.env['QUERY_STRING'] = 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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pjax_rails-0.3.4 | lib/pjax.rb |
pjax_rails-0.3.3 | lib/pjax.rb |
pjax_rails-0.3.2 | lib/pjax.rb |