towerjs控制器中的操作更新不起作用

时间:2012-05-09 13:25:32

标签: node.js coffeescript towerjs

我会尝试在towerjs中创建一个控制器,但在更新操作时出错:

TypeError: Property 'id' of object #<Object> is not a function

以下是我的行动:

update: ->
  App.User.find @params.id (error, user) =>
    user.updateAttributes @params.user, (error) =>
      if error
        @render "edit", locals: user: user
      else
        @render "show", locals: user: user 

控制台告诉我传递了id参数:

Parameters:
{ user: 
  { name: 'admin',
    email: 'example@domain.com',
    password: '21232f297a57a5a743894a0e4a801fc3' },
  id: '4faa6c614b2ce49b34000001',
  action: 'update',
  format: 'html' }

更多信息: 相同的操作是在show,edit,destroy中构建的,它们正在工作。 所有操作都使用相同的_form partial。

1 个答案:

答案 0 :(得分:1)

此代码:

f @params.id (a, b) => ...

相当于:

f(@params.id((a,b) => ...))

因此,您尝试将@params.id作为函数调用,并将(error,user) =>函数作为参数传递给@params.id。我想你想将@params.id(error,user) =>作为两个参数传递给App.user.find,所以添加一个逗号:

update: ->
  App.User.find @params.id, (error, user) =>
    #---------------------^