【问题标题】:Action update in towerjs controller does not workTowerjs 控制器中的操作更新不起作用
【发布时间】:2012-05-09 13:25:32
【问题描述】:

我会尝试在 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' }

更多信息: 显示、编辑、销毁中内置了相同的操作,并且它们正在工作。 所有动作都使用相同的_form partial。

【问题讨论】:

    标签: node.js coffeescript towerjs


    【解决方案1】:

    这段代码:

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

    等价于:

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

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

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

    【讨论】:

    • 我很尴尬,这很容易。谢谢。
    • @MarcinRobak:寻求帮助并不尴尬,因为你盯着某样东西看太久而看不到明显的东西,而你没有 想要寻求帮助是另一回事 :)
    • 很高兴听到。你让我今天一整天都感觉很好。问候! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多