0

backbone.js railscasts を見たところ、名前が存在しない場合にエラーアラートが表示されませんが、サーバー側でエラーが発生します。

Rails 3.2.8とbackbone-on-Rails 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

ありがとうございました!

4

1 に答える 1

0

インデントが間違っているため、 がありません@handleError。代わりに、createEntryメソッドは次のようなオブジェクトを返しています。

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

@handleErrorしたがって、エラー コールバックとして使用しようとすると、次のようになります。

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

あなたは本当に言っています:

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

エラーコールバックをに設定undefinedしても、何も役に立ちません。

左マージンに向かって 2 スペース引き戻すhandleErrorと、運が良くなる可能性があります。

于 2012-10-29T23:07:44.473 に答える