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 [+/-]

Wildcard Routes

With 'wildcard' routes you capture n segments of your url and get them back as parameters. Let's take a look at a couple of examples, to make this easier to understand:

Mack::Routes.build do |r|
  r.connect '/chapters/*chaps', :controller => :chapters, :action => :show
  r.authors '/a/*authors/z', :controller => :books, :action => :peeps
end

Wildcards are defined in when building routes by using a '*' instead of the normal ':' for capturing embedded parameters. Here are some examples:

Mack::Routes.retrieve('/chapters/1/2/3') 
  # => {:chaps => ['1', '2', '3'], :format => 'html', :controller => :chapters, :action => :show, :method => :get}
Mack::Routes.retrieve('/chapters/1') 
  # => {:chaps => ['1'], :format => 'html', :controller => :chapters, :action => :show, :method => :get}
Mack::Routes.retrieve('/a/me/z') 
  # => {:authors => ['me'], :format => 'html', :controller => :books, :action => :peeps, :method => :get}
Mack::Routes.retrieve('/a/me/you/z') 
  # => {:authors => ['me', 'you'], :format => 'html', :controller => :books, :action => :peeps, :method => :get}

As you can see in the first example we said everything that comes after '/chapters/' should get sent to the :chaps parameter. Wildcard parameters will also get returned as an Array. So when we have the url '/chapters/1/2/3' we end up with a parameter called :chaps that is an Array containing the values, '1', '2', and '3'.

The reverse of this is also true. We can build wildcard urls as well:

authors_url(:authors => ['me', 'you']) # => '/a/me/you/z'
This guide was written for Mack version 0.8.2