Short example

phmongeau edited this page Aug 13, 2010 · 2 revisions

Camping encourages short, elegant applications. In this example, we’re going to skip the database and put together a simple home page with a few of your favorite links.

The site can be stored in a single file called homepage.rb. Run it like: camping homepage.rb

require 'camping'
Camping.goes :HomePage

module HomePage::Controllers

  # The index page shows the `index' view.
  class Index < R '/'
    def get
      render :index 
    end
  end

  # Any other page name gets sent to the view
  # of the same name.
  #
  #   /index -> Views#index
  #   /sample -> Views#sample
  #
  class Page < R '/(\w+)'
    def get(page_name)
      render page_name
    end
  end

end

module HomePage::Views
  # If you have a `layout' method like this, it
  # will wrap the HTML in the other methods.  The
  # `self << yield' is where the HTML is inserted.
  def layout
    html do
      title { 'My HomePage' }
      body { self << yield }
    end
  end

  # The `index' view.  Inside your views, you express
  # the HTML in Ruby.  See http://joho.github.com/markaby/.
  def index
    p 'Hi my name is Charles.'
    p 'Here are some links:'
    ul do
     li { a 'Google', :href => 'http://google.com' }
     li { a 'A sample page', :href => '/sample' }
    end
  end

  # The `sample' view.
  def sample
    p 'A sample page'
  end
end

Further examples