batman.js - Uncaught TypeError: Cannot Call Method "Dispatch" of Undefined

I ran in to this error:

Uncaught TypeError: Cannot call method ‘dispatch’ of undefined

The first thing to check is that your route exists. I created a utility located here: https://github.com/RyanonRails/batman.utilitybelt that can list out your current routes.

If the route exists, you need to make sure that your controller names are named correctly as such:

1
2
3
4
5
@resources 'sections', 'sectionrows'

-------------This would looks for these 2 controllers------------
class EST.SectionsController extends Batman.Controller
class EST.SectionrowsController extends Batman.Controller

I ran into this because of the above 2 word model. For future reference here’s the layout I used:

Driver (/est.coffee):

1
2
3
4
5
6
window.EST = class EST extends Batman.App
  Batman.ViewStore.prefix = 'app/views'
  @controller 'sectionrows'
  @model 'sectionrow'

  @resources 'sectionrows'

Controller (/controllers/sectionrows_controller.coffee):

1
2
3
4
5
6
class EST.SectionrowsController extends Batman.Controller
  routingKey: 'sectionrows'

  index: ->
    EST.SectionRow.load (err,results) =>
      @set 'sectionrows', results

Model (/models/sectionrow.coffee):

1
2
3
4
5
6
7
class EST.SectionRow extends Batman.Model
  @resourceName: 'sectionrow'
  @url = "/api/sectionrows"

  @set 'primaryKey', 'SectionRowId'
  @persist Batman.RestStorage
  @encode 'SectionRowId', 'WorkType'

View (/views/sectionrows/index.html):

1
2
3
4
5
6
7
8
<h2>All Section rows</h2>

  <div data-foreach-section="sectionrows" data-mixin="animation">
    <a data-bind="sectionrow.SectionRowId" ></a>
    <p data-bind="sectionrow.WorkType"></p>
  </div>

Total # of sections: <span data-bind="sectionrows.length"></span>

Batman 0.9