我有一个骨干应用程序,我已经集成到我的rails应用程序中。我试图在创建时将验证错误传递回Backbone模型,但它并没有完全回到Backbone。
这是我的模特:
# app/assets/javascripts/models/source.js.coffee
class MyApp.Models.Source extends Backbone.Model
urlRoot: '/api/sources'
我的导轨控制器:
# app/controller/api/sources_controller.rb
class Api::SourcesController < ApplicationController
respond_to :json
def create
@source = Source.new source_params
if @source.save
respond_with @source
else
render json: { error: @source.error.messages }, status: 422
end
end
def source_params
params.require(:source).permit(:feed_id, :source, :term)
end
end
最后是尝试创建模型的代码:
# app/assets/javascripts/views/new_source.js.coffee
class MyApp.Views.SourceForm extends Backbone.View
events: ->
'submit .new_source': 'createSource'
createSource: ->
@source = new Juicer.Models.Source $(event.target).serializeHash()
@source.save
success: =>
console.log 'ya'
error: =>
console.log 'boo'
然而,当我实际运行此代码时,它永远不会一直回到此主干回调,而是在控制台中出现此错误:
POST http://localhost:3000/api/sources 422 (Unprocessable Entity)
我在Backbone来源中挖了一下,但我无法弄清楚为什么它没有通过。它似乎停留在jQuery .ajax方法,它应该触发错误回调,但似乎是破坏。
我使用Backbone v1.1.1和jQuery v1.11.1以及Rails 4.1.5
答案 0 :(得分:0)
如果我传入null作为保存每this SO帖子的第一个参数
,它似乎会遇到错误回调像这样:
createSource: ->
@source = new Juicer.Models.Source $(event.target).serializeHash()
@source.save null,
success: =>
console.log 'ya'
error: =>
console.log 'boo'