问题在Ember中创建新的路径视图

时间:2014-08-05 04:57:58

标签: ruby-on-rails postgresql ember.js

我一直在跟随Vic Ramon的Ember教程(我是新的),我能够成功创建CRUD界面,可以回到1个postgres表。 http://ember.vicramon.com/our-app

我想扩展本教程以通过rails使用2个不同的postgres表。这是路由器(名称很好,状态不好):

App.Router.reopen
  location: 'auto'
  rootURL: '/'


App.Router.map ()->
  @resource 'names', path: '/', ->
    @route 'new'
    @resource 'name', path: '/name/:id', ->
      @route 'edit'

  @resource 'states', path: '/states/', ->
    @resource 'state', path: ':id'

控制器:

App.StatesController = Ember.ArrayController.extend

路线:

App.StatesRoute = Ember.Route.extend

  model: -> @store.find 'state'

型号:

App.State = DS.Model.extend
  calc_num:         DS.attr 'number'
  energy_list:      DS.attr 'string'
  dos_list:         DS.attr 'string'
  atom_subset:      DS.attr 'string'
  orbital_subset:   DS.attr 'number'
  fermi_level:      DS.attr 'number'
  core_level:       DS.attr 'number'
  elec_occ_list:    DS.attr 'string'
  elec_energy_list: DS.attr 'string'

模板:

article#states
h1 DOS States
ul
  each state in controller
    link-to 'state' state tagName="li"
      state.calc_num

当我运行网站时,我收到以下错误:

>   Error while loading route: TypeError: undefined is not a function
>     at instantiate (http://lh:3000/assets/ember.js?body=1:11474:26)
>     at lookup (http://lh:3000/assets/ember.js?body=1:11340:19)
>     at Object.Container.lookup (http://lh:3000/assets/ember.js?body=1:11019:16)
>     at Ember.Route.Ember.Object.extend.controllerFor (http://lh:3000/assets/ember.js?body=1:36763:28)
>     at Ember.Route.Ember.Object.extend.setup (http://lh:3000/assets/ember.js?body=1:36302:27)
>     at handlerEnteredOrUpdated (http://lh:3000/assets/ember.js?body=1:33569:36)
>     at http://lh:3000/assets/ember.js?body=1:33538:18
>     at forEach (http://lh:3000/assets/ember.js?body=1:34579:54)
>     at setupContexts (http://lh:3000/assets/ember.js?body=1:33537:9)
>     at finalizeTransition (http://lh:3000/assets/ember.js?body=1:33711:9)

您认为怎么回事?我可以在ember检查器中告诉数据似乎是为状态加载的。非常感谢!

1 个答案:

答案 0 :(得分:0)

Matthew Blancarte给出了解决方案,但诀窍是在声明控制器之后总是添加括号,即使在coffeescript中也是为了安全。

App.StatesController = Ember.ArrayController.extend({})