lib/nitro/dispatcher.rb in nitro-0.14.0 vs lib/nitro/dispatcher.rb in nitro-0.15.0

- old
+ new

@@ -131,39 +131,47 @@ # OPTIMIZE: check only if lookup fails. @apis.each { |k, v| api = k if path.slice!(/#{k}\//) } end parts = path.split('/') + parts.shift case parts.size when 0 # / -> root.index - # base = @template_root + base = '/' klass = controller_class_for(:root, context) action = 'index' - when 2 - if klass = controller_class_for(parts[1], context) + when 1 + if klass = controller_class_for(parts[0], context) # controller/ -> controller.index - # base = "#{@template_root}/#{parts[1]}" + base = "/#{parts[0]}" action = 'index' else # action/ -> root.action - # base = @template_root + base = '/' klass = controller_class_for(:root, context) - action = parts[1] + action = parts[0] end - when 3 - # controller/action/ -> controller.action - # base = "#{@template_root}/#{parts[1]}" - klass = controller_class_for(parts[1], context) - action = parts[2] + else + if klass = controller_class_for(parts[0], context) + # controller/action -> controller.action + base = "/#{parts[0]}" + parts.shift + action = parts.join('__') + else + # action/ -> root.action + base = '/' + klass = controller_class_for(:root, context) + action = parts.join('__') + end end - + content_type = @apis[:api] || 'text/html' - return klass, "__#{api}__#{action}", content_type + return klass, "__#{api}__#{action}", content_type, base end alias_method :split_path, :dispatch # Get the controller for the given key. # Also handles reloading of controllers.