Class: Cuca::Layout

Inherits:
Widget show all
Defined in:
lib/cuca/layout.rb

Overview

Layout

A Layout just behaves as a normal widget plus it will give you the @content_for_layout instance variable with the content generated from the controller.

Naming

Name it FilenameLayout (ending always with Layout, for example: ‘StandardLayout’ or ‘FancyLayout’). When you specify your layout in the controller simply do a

layout 'standard'

Examples

Layout Class:

class PlainLayout < Cuca::Layout

 def output
   content << "     <html>\n       <head><title>\#{@page_title}</title></head>\n     <body>\n      \#{@content_for_layout}\n     <hr>\n     <small>Rendered using the Plain Layout - at \#{Time.new.to_s}</small>\n     </body>\n     </html>\n     EOI\n end\nend\n"

Example Controller that would work with the above layout:

class IndexController < Cuca::Controller
 layout 'plain'

 def run
    @page_title = "Main Page"
    content << "<h3>Welcome to my Webpage</h3>
 end
end

Note: The above example doesn’t make use of a generator - which would simplify the development of larger layouts and controllers.

Instance Method Summary collapse

Methods inherited from Widget

#app, #cgi, #clear, clear_hints, #content, #content=, #controller, define_attr_method, #escape, #escapeHTML, #get_assigns, #hints, #log, #output, #params, #query_parameters, #request_method, #request_parameters, run_attr_method, #session, #unescape, #unescapeHTML

Constructor Details

#initialize(params = {}, &block) ⇒ Layout

the controller will create the layout. The controller will also set the content_for_layout assign besides other assigns from the controller.

Raises:

  • (ArgumentError)


49
50
51
52
53
54
55
# File 'lib/cuca/layout.rb', line 49

def initialize(params = {}, &block)
  raise ArgumentError.new("Layout requires :assigns for layout content") if params[:assigns].nil?
  params[:assigns].each_pair do |k,v|
    instance_variable_set("@#{k.to_s}", v)
  end
  super
end

Instance Method Details

#to_sObject



57
58
59
60
# File 'lib/cuca/layout.rb', line 57

def to_s
   output
   return content.to_s
end