Javascript 主干模型save()方法不执行任何操作

Javascript 主干模型save()方法不执行任何操作,javascript,ruby-on-rails,backbone.js,Javascript,Ruby On Rails,Backbone.js,我正在将主干网与Rails一起使用,并尝试将一个新模型保存到服务器。但是,在模型上调用.save()似乎没有任何作用。查看Chrome中的“网络”选项卡,我没有看到任何请求。这是我的密码: 型号 class MyApp.Models.Chain extends Backbone.Model defaults: steps: [] id: null urlRoot: '/chains' validate: (attrs) ->

我正在将主干网与Rails一起使用,并尝试将一个新模型保存到服务器。但是,在模型上调用
.save()
似乎没有任何作用。查看Chrome中的“网络”选项卡,我没有看到任何请求。这是我的密码:

型号

class MyApp.Models.Chain extends Backbone.Model
    defaults:
        steps: []
        id: null

    urlRoot: '/chains'

    validate: (attrs) ->
        if $.trim(attrs.steps[@step_number - 1]) == ''
            return "Step can't be blank."
查看

class MyApp.Views.ChainsNew extends Backbone.View

    # @template is defined by a conditional inside render()
    initialize: ->
        @is_saving = false

    events:
        'click #btn-go': 'add_step'
        'click #btn-done': 'save'

    render: (step_number) ->
        @model.step_number = step_number

        @template = if @model.step_number is 1 then JST['chains/new'] else JST['chains/step']
        $(@el).html(@template({previous_step_text: @model.get('steps')[step_number - 2]}))

        @

    add_step: ->
        #divide array into arrays of steps before and after step being edited
        steps = @model.get('steps')
        array1 = steps.slice(0, @step_number - 1)
        array2 = steps.slice(@step_number)
        array1.push(@$el.find('textarea').val())
        newArray = array2.concat(array1)

        if !@model.set({steps: newArray}, {validate: true})
            alert(@model.validationError)
            false
        else
            true #need to a return a value for the `save` method

    save: ->
        @is_saving = true
        if @add_step
            @model.save(null, {
                success: ->
                    console.log(arguments)

                error: ->
                    console.log(arguments)
            })

我知道正在调用
@model.save
,因为我在它前面的控制台上记录了一条消息(换句话说,如果@add\u step为true,则为

最有可能的情况是,您的模型验证失败,这使得
save
返回false,并且不进行API调用。试一试

class MyApp.Models.Chain extends Backbone.Model
    defaults:
        steps: []
        id: null

    urlRoot: '/chains'

    validate: (attrs) ->
        if $.trim(attrs.steps[@step_number - 1]) == ''
            console.log "Houston, we have a problem"
            return "Step can't be blank."

如果您在控制台中看到一条消息,那就是问题所在。您还可以尝试对
validate
函数进行完整的注释,并且在任何情况下都应该进行API调用。

也许您需要在
urlRoot
?@aledalgrande上的模型中添加一个
url
参数-刚刚尝试过,但没有骰子。谢谢!这让我找到了真正的罪魁祸首——我的咖啡脚本语法错误。