使用capybara-webkit或selenium无法转换到使用afterModel挂钩的路由

时间:2013-11-22 22:22:27

标签: ruby-on-rails selenium ember.js ember-data capybara-webkit

我有一个Ember路由从商店中获取它的模型(ember-data),然后需要从服务器重新加载它以填充未在index动作上发送的属性。

为实现这一点,我在路由器中添加了afterModel挂钩,并调用model.reload()。在用户界面中,它的工作非常出色; index操作使用部分数据加载所有项目,然后单击详细信息从服务器请求其余属性。

但是,当我尝试使用capybara-webkit或selenium运行集成测试时,路由不会转换。网址会更改,但不会呈现新视图。

我在路由中的console.logmodelafterModel操作中添加了setupController个语句; model操作似乎没有触发。但是,如果我从路由器中删除afterModel挂钩,model仍然不会触发,但路由正常转换。作为网络浏览器中的用户,modelafterModelsetupController都会触发,并且路线会以完全填充的模型进行转换。

路由器代码:

Prm.LeadRoute = Ember.Route.extend
  setupController: (controller, model) ->
    console.log 'setupController'
    @controllerFor('newNote').set('model', @store.createRecord('note'))
    @controllerFor('newCustomLeadEmail').set('model', @store.createRecord('customLeadEmail'))
    @controllerFor('newLeadQuote').set('model', @store.createRecord('leadQuote'))
    console.log model
    console.log model.get('id')
    model.reload()
    controller.set('model', model)

  model: (params) ->
    console.log 'model'
    selectedLead = @store.find('lead', params.lead_id)
    @controllerFor('property').set('selectedLead', selectedLead)
    selectedLead

  afterModel: (model) ->
    console.log 'afterModel'
    model.reload()

  deactivate: ->
    @controllerFor('property').set('selectedLead', null)

编辑:这是'过渡代码'。没什么特别的;我们只是点击链接并让Ember路由器处理网址:

<h2 {{action 'selectLead' lead}}>
  {{#linkTo 'lead' lead}}{{unbound bookingRequestName}}{{/linkTo}}
</h2>

0 个答案:

没有答案