Sha256: 217d7e3d829c60e159ac0b2053c516fa9302c433142acd427280ae8fa8abf2b9

Contents?: true

Size: 1.14 KB

Versions: 17

Compression:

Stored size: 1.14 KB

Contents

module Unpoly
  module Rails
    ##
    # This adds two methods `#up` and `#up?` to all controllers,
    # helpers and views, allowing the server to inspect the current request
    # for Unpoly-related concerns such as "is this a page fragment update?".
    module Controller

      def self.prepended(base)
        base.helper_method :up, :up?, :unpoly, :unpoly?
        if base.respond_to?(:after_action)
          base.after_action { up.after_action }
        else
          base.after_filter { up.after_action }
        end
      end

      ##
      # TODO: Docs
      def up
        @up_change ||= Change.new(self)
      end

      alias_method :unpoly, :up

      ##
      # :method: up?
      # Returns whether the current request is an
      # [page fragment update](https://unpoly.com/up.replace) triggered by an
      # Unpoly frontend.
      delegate :up?, :unpoly?, to: :up

      ##
      # TODO: Docs
      def redirect_to(target, *args)
        if up?
          target = url_for(target)
          target = up.url_with_field_values(target)
        end
        super(target, *args)
      end

      ::ActionController::Base.prepend(self)

    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
unpoly-rails-2.7.2.2 lib/unpoly/rails/controller.rb
unpoly-rails-2.7.2.1 lib/unpoly/rails/controller.rb
unpoly-rails-2.7.2 lib/unpoly/rails/controller.rb
unpoly-rails-2.7.1.1 lib/unpoly/rails/controller.rb
unpoly-rails-2.7.1 lib/unpoly/rails/controller.rb
unpoly-rails-2.6.1 lib/unpoly/rails/controller.rb
unpoly-rails-2.6.0 lib/unpoly/rails/controller.rb
unpoly-rails-2.5.3 lib/unpoly/rails/controller.rb
unpoly-rails-2.5.2 lib/unpoly/rails/controller.rb
unpoly-rails-2.5.1 lib/unpoly/rails/controller.rb
unpoly-rails-2.5.0 lib/unpoly/rails/controller.rb
unpoly-rails-2.4.1 lib/unpoly/rails/controller.rb
unpoly-rails-2.4.0 lib/unpoly/rails/controller.rb
unpoly-rails-2.3.0 lib/unpoly/rails/controller.rb
unpoly-rails-2.2.1 lib/unpoly/rails/controller.rb
unpoly-rails-2.2.0 lib/unpoly/rails/controller.rb
unpoly-rails-2.2.0.pre.rc1 lib/unpoly/rails/controller.rb