轨道 4 UJS 未触发失败/完成/始终回调



我正在使用UJS在modal中填充表单,并且我正在使用JQuery Validing执行验证并通过ajax将表单提交回服务器。

一切正常,表单呈现,字段验证,表单正确提交到服务器。 问题是挂在 $.rails.handleRemote 函数上的回调不会触发。

这是我用于验证和提交的 CoffeeScript(这个函数是从 new.js.erb 和 edit.js.erb 调用的:

@initializeForm: ->
    $(".note-form").validate ->
        rules: 
            "note[title]" : "required"
    submitHandler: (form) ->
        $.rails.handleRemote($(form))
            .done ->
                alert "You will never see me!"

新.js.erb

$('#modal-window').html('<%= escape_javascript(render :partial => 'form', :object => @note) %>');
Note.initializeForm();

创建.js.erb

var note = new Note();
note.createOrUpdate("note<%= @note.id %>", "<%= @note.title %>", "<%= escape_javascript(render @note) %>");

我能够通过在应用程序范围的脚本中添加以下内容来破解它:

$(document).on 'ajax:success', '.note-form', ->
    alert "Here I am!"

我已经验证我只加载了一个 JQuery 副本。

任何想法都会很棒!

编辑这是发送到浏览器的编译JS:

Note.initializeForm = function() {
    return $(".note-form").validate(function() {
        return {
            rules: {
                "note[title]": "required"
            },
            submitHandler: function(form) {
                return $.rails.handleRemote($(form)).always(function() {
                    return alert("You will never see me!");
                });
            }
         };
    });
}; 

问题出在验证调用的语法上。 我传递的是函数而不是对象。

从 CoffeeScript 调用validate的正确方法:

@initializeForm: ->
    $(".note-form").validate
        rules: 
            "note[title]" : "required"
        submitHandler: (form) ->
            $.rails.handleRemote($(form))
                .done ->
                    alert "You will never see me!"

最新更新