使用Rails 4控制器响应的骨干错误回调

时间:2014-08-28 21:51:46

标签: javascript jquery ruby-on-rails backbone.js ruby-on-rails-4

我有一个骨干应用程序,我已经集成到我的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'

然而,当我实际运行此代码时,它永远不会一直回到此主干回调,而是在控制台中出现此错误:

(422 (Unprocessable Entity)

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

我在Backbone来源中挖了一下,但我无法弄清楚为什么它没有通过。它似乎停留在jQuery .ajax方法,它应该触发错误回调,但似乎是破坏。

我使用Backbone v1.1.1和jQuery v1.11.1以及Rails 4.1.5

1 个答案:

答案 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'