Sha256: 97f484182c4d18916bc23231427b23547b725db058f6d1641a59ef2573d644f6

Contents?: true

Size: 1.23 KB

Versions: 11

Compression:

Stored size: 1.23 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)
        up.no_vary do
          if up?
            target = url_for(target)
            target = up.url_with_field_values(target)
          end
          super(target, *args)
        end
      end

    end
  end
end

ActiveSupport.on_load(:action_controller_base) do
  prepend Unpoly::Rails::Controller
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
unpoly-rails-3.10.2 lib/unpoly/rails/controller.rb
unpoly-rails-3.10.0 lib/unpoly/rails/controller.rb
unpoly-rails-3.10.0.rc1 lib/unpoly/rails/controller.rb
unpoly-rails-3.9.5 lib/unpoly/rails/controller.rb
unpoly-rails-3.9.3.1 lib/unpoly/rails/controller.rb
unpoly-rails-3.9.3 lib/unpoly/rails/controller.rb
unpoly-rails-3.9.2.1 lib/unpoly/rails/controller.rb
unpoly-rails-3.9.2 lib/unpoly/rails/controller.rb
unpoly-rails-3.9.1 lib/unpoly/rails/controller.rb
unpoly-rails-3.9.0 lib/unpoly/rails/controller.rb
unpoly-rails-3.8.0.1 lib/unpoly/rails/controller.rb