0

我有一个骨干应用程序,我已经集成到我的Rails应用程序。我试图将我的验证错误传递回创建的Backbone模型,但它并没有让它回到Backbone。骨干网错误回调与Rails 4控制器响应

这里是我的模型:

# 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' 

当我真正运行这个代码,但它永远不会让它回到这个骨干回调,而是我得到了这个错误nsole:

(422 (Unprocessable Entity)

POST http://localhost:3000/api/sources 422 (Unprocessable Entity)

我周围挖的骨干源一下,但我想不通这是为什么不使它通过。它似乎卡住了jQuery .ajax方法,它应该触发错误回调,但似乎正在中断。

我使用骨干V1.1.1和jQuery v1.11.1和Rails 4.1.5

+0

@muistooshort我故意想它在这种情况下失败,我想source.save返回false。如果我传入适当的参数,它工作正常。 – goddamnyouryan 2014-08-28 22:51:59

回答

0

看来,如果我通过在null作为第一个参数每this保存击中错误回调SO发布

像这样:

createSource: -> 
    @source = new Juicer.Models.Source $(event.target).serializeHash() 
    @source.save null, 
    success: => 
     console.log 'ya' 
    error: => 
     console.log 'boo'