骨干和轨道3.2



我刚刚观看了backbone.js railscasts,当名称不存在时,我不会收到错误警报,但确实会在服务器端出现错误。

IM使用Rails 3.2.8和骨干在轨道上0.9.2.3

在网络控制台中确实说明API/条目存在错误,并且在响应中有错误键,但是当我单击表单上没有添加时,仍然没有警报。

这是我的代码...请帮助我弄清楚可能是什么问题!

class Raffler.Views.EntriesIndex extends Backbone.View
  template: JST['entries/index']
  events:
    'submit #new_entry': 'createEntry'
    'click #draw': 'drawWinner'
  initialize: ->
    @collection.on('reset', @render)
    @collection.on('add', @appendEntry)
  render: =>
    $(@el).html(@template())
    @collection.each(@appendEntry)
    this
  appendEntry: (entry) =>
    view = new Raffler.Views.Entry(model: entry)
    @$('#entries').append(view.render().el)
  drawWinner: (event) ->
    event.preventDefault()
    @collection.drawWinner()
  createEntry: (event) ->
    event.preventDefault()
    attributes = name: $('#new_entry_name').val()
    @collection.create attributes,
      wait: true
      success: -> $('#new_entry')[0].reset()
      error: @handleError
    handleError: (entry, response) ->
      if response.status == 422
        errors = $.parseJSON(response.responseText).errors
        for attribute, messages of errors
          alert "#{attribute} #{message}" for message in messages

谢谢!

您的凹痕是错误的,因此您没有@handleError,而是您的createEntry方法正在返回这样的对象:

{ handleError: (entry, response) -> ... }

因此,当您尝试将@handleError用作错误回调时:

@collection.create attributes,
  wait: true
  success: -> ...
  error: @handleError # <----------- Here

您真的在说:

@collection.create attributes,
  wait: true
  success: -> ...
  error: undefined

并将您的错误回调设置为undefined没有任何有用的事情。

handleError拉回左边缘两个空间,您可能会有更好的运气。

相关内容

  • 没有找到相关文章

最新更新