Backbone.js и Rails 3.2

Я только что наблюдал за backscone.js railscasts, и я не получаю предупреждение об ошибке, когда имя отсутствует, но действительно получаю ошибку на стороне сервера.

я использую рельсы 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

Спасибо!

1 ответ

Решение

Ваш отступ неправильный, поэтому у вас нет @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 вернитесь к левому краю на два пробела и вам повезет больше.

Другие вопросы по тегам