Jump To …

routes.coffee

src/

Routes

We are setting up theese routes:

module.exports  = (app) ->
  • / -> controllers/index/index method
  app.all '/', (req, res, next)->
    routeMvc('index', 'index', req, res, next)
  • /:controller -> controllers/:controller/index method
  app.all '/:controller' , (req, res, next)->
    routeMvc(req.params.controller, 'index',req,res, next)
  
  • /:controller/:method -> controllers/:controller/:method method
  app.all '/:controller/:method' , (req, res, next)->
    routeMvc(req.params.controller, req.params.method, req,res,next)
  • /:controller/:method/:id -> controllers/:controller/:method method with :id param passed
  app.all '/:controller/:method/:id' , (req, res, next)->
    routeMvc(req.params.controller, req.params.method,req,res, next)

If all else failed, show 404 page

  app.all '/*', (req, res)->
    console.warn "error 404: ", req.url
    res.render '404',404

render the page based on controller name, method and id

routeMvc = (controllerName, methodName, req, res, next)->
  controllerName='index' if not controllerName?
  controller=null
  try
    controller=require "./controllers/"+controllerName
  catch e
    console.warn "controller not found: "+ controllerName, e
    next()
    return
  data=null
  if methodName?

eval is evil, so sanitize it

    methodName = methodName.replace(/[^a-z0-9A-Z_-]/i,'')
    method=eval('controller  .'+methodName)
    if method?
      method req, res, next
  else
    console.warn 'method not found: ' +methodName
    next()

generated Sun Dec 23 2012 16:04:40 GMT-0800 (PST)