Sha256: ab0073e86fb2d5f6103a8311325acf5ce34a13abf61302c085ab7ab09945c7d3

Contents?: true

Size: 1.64 KB

Versions: 5

Compression:

Stored size: 1.64 KB

Contents

# Includes files into the class to allow it to minimally delegates to a web controller
module Merb
  module Mixins
    module WebController
      
      def self.included(base)
        [:content_type, :web_controller].each do |attr|
          base.send(:attr_accessor, attr)
        end
        base.send(:include, InstanceMethods)
        base.send(:extend, ClassMethods)
      end
      
      module InstanceMethods
        def request
           @web_controller.request  
        end

        def cookies
          @web_controller.cookies
        end  

        def headers
          @web_controller.headers
        end

        def session
          @web_controller.session
        end

        def response
          @web_controller.response
        end    

        def route
          request.route
        end

        def url(name, rparams={})
          Merb::Router.generate(name, rparams,
            { :controller => @web_controller.controller_name,
              :action => @web_controller.action_name,
              :format => params[:format]
            }
          )
        end
        
        private 
        # This method is here to overwrite the one in the general_controller mixin
        # The method ensures that when a url is generated with a hash, it contains a controller
        def get_controller_for_url_generation(opts)
           controller = opts[:controller] || @web_controller.params[:controller]
           raise "No Controller Specified for url()" unless controller
           controller
        end
        
      end
      
      module ClassMethods
        
      end
      
      
      
    end # WebController
  end # Mixins
end # Merb

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
merb-parts-0.9.4 lib/merb-parts/mixins/web_controller.rb
merb-parts-0.9.6 lib/merb-parts/mixins/web_controller.rb
merb-parts-0.9.7 lib/merb-parts/mixins/web_controller.rb
merb-parts-0.9.5 lib/merb-parts/mixins/web_controller.rb
thorero-parts-0.9.4 lib/merb-parts/mixins/web_controller.rb