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