1. Welcome
  2. Getting Started [+/-]
    1. Installing from RubyGems
    2. Installing from GitHub.com
    3. Installing with Sake
  3. The Basics [+/-]
    1. Hello World
      1. Application Generation Options
    2. Paths
    3. Environments
    4. Rake
  4. Configuration [+/-]
    1. Configatron
    2. Initializers
      1. Gems
      2. Mime-Types
  5. Routing [+/-]
    1. Default Routes
    2. Named Routes
    3. RESTful/Resource Routes
    4. Nested Resource Routes
    5. Regex Routes
    6. Wildcard Routes
    7. Blocks in Routes
    8. Redirecting
    9. Error Handling
    10. Deferred? Routes
    11. Misc. Routing
  6. Controllers [+/-]
    1. Actions
    2. Headers/Status
    3. Handling Content Types
    4. Filters
    5. Helpers
    6. Layouts
    7. Tell Messaging
    8. Redirecting
    9. Rendering
      1. Engines
        1. Erubis
        2. XML Builder
        3. Extending
          1. Case Study: PDF Writer
      2. Types
        1. :action
        2. :text
        3. :inline
        4. :xml
        5. :url
        6. :partial
        7. :template
        8. :public
        9. Extending
          1. Case Study: PDF Writer
  7. Views [+/-]
    1. Helpers
    2. Layouts
    3. Assets Host
    4. Assets Management
    5. Form Builders
  8. Sessions [+/-]
    1. Session Store API
  9. Request/Response [+/-]
    1. Cookies
  10. Testing [+/-]
    1. RSpec
    2. Test::Unit::TestCase
  11. Porlets [+/-]
    1. Developing
    2. Testing
    3. Packaging
    4. Using
  12. Plugins [+/-]
    1. Extending
      1. Case Study: PDF Writer
  13. Deploying [+/-]
    1. Thin
    2. Passenger (mod_rails)
    3. Joyent Accelerator
  14. Mack More [+/-]
    1. mack-active_record
    2. mack-asset_packager
    3. mack-caching
    4. mack-data_factory
    5. mack-data_mapper
    6. mack-distributed
    7. mack-encryption
    8. mack-facets
    9. mack-haml
    10. mack-javascript
    11. mack-localization
    12. mack-markaby
    13. mack-notifier
    14. mack-orm
    15. mack-pdf_writer
  15. Rails to Mack Cheat Sheet
  16. Contributing
  17. APIs [+/-]

Using Layout

Layout files for Mack application are stored in app/views/layouts folder. When a Mack application is first generated, it will have a default layout file, application.html.erb. This layout file will be used by all the views defined in the application, unless otherwise specified. This section of the document will discuss how we can control which layout to use in a controller, and also take a peek at the inside of the layout file.

Layout usage is defined in a controller. It can either be set globally (i.e. all action will use that layout), or on a per action basis; Layout can also be turned off if desired.
The following code shows how to set the layout globally:

class MyController
  include Mack::Controller

  layout :my_cool_layout
end
The following will set the layout per action:
class MyController
  include Mack::Controller

  def index
    render(:text, "I've used a custom layout in the action!", :layout => :my_cool_layout)
  end
end
Also note that by setting the layout explicitly in an action, it will overwrite the global layout setting.
class MyController
  include Mack::Controller

  layout :application

  def index
    render(:text, "I've changed the layout in the action!", :layout => :my_cool_layout)
  end
end
And to disable layout, all you have to do is set layout to false.
class MyController
  include Mack::Controller

  def index
    render(:text, "I've set my layout to false!", :layout => false)
  end
end

The most important section of a layout file would be how to get the actual content of the rendered page integrated into the layout. If you examine the content of application.html.erb that got generated by the framework, you will noticed the following section:

...
<%= yield_to :view  %>
...
And that's telling the framework that's the location where you want the rendered page inserted.

This guide was written for Mack version 0.8.2