Sha256: 49c0b787ea65b84c45a2a0e81b1ca552758aee14f24e7467a92af47a7ee7deec

Contents?: true

Size: 1.12 KB

Versions: 5

Compression:

Stored size: 1.12 KB

Contents

class ModelController  
  def self.model(val)
    @@default_model = val
  end
  
  # Sets the current model on this controller
  def model(val)
    if val.is_a?(Symbol) || val.is_a?(String)
      collections = [:page, :store, :params]
      if collections.include?(val.to_sym)
        @model = self.send(val)
      else
        raise "#{val} is not the name of a valid model, choose from: #{collections.join(', ')}"
      end
    elsif model
      @model = model
    else
      raise "model can not be #{model.inspect}"
    end
  end
  
  def self.new(*args, &block)
    inst = self.allocate
    if @@default_model
      inst.model(@@default_model || :page)
    end
    
    inst.initialize(*args, &block)
    
    return inst
  end
  
  def page
    $page.page
  end

  def store
    $page.store
  end

  def params
    $page.params 
  end

  def url
    $page.url 
  end
  
  def channel
    $page.channel
  end
  
  def tasks
    $page.tasks
  end
  
  def controller
    @controller ||= ReactiveValue.new(Model.new)
  end

  def method_missing(method_name, *args, &block)
    return @model.send(method_name, *args, &block)      
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
volt-0.5.1 lib/volt/controllers/model_controller.rb
volt-0.5.0 lib/volt/controllers/model_controller.rb
volt-0.4.18 lib/volt/controllers/model_controller.rb
volt-0.4.17 lib/volt/controllers/model_controller.rb
volt-0.4.15 lib/volt/controllers/model_controller.rb