Rails 4 UJS не стреляет сбой / сделано / всегда обратные вызовы

0

Я использую UJS для заполнения формы в модальном режиме, и я использую JQuery Validate для выполнения проверки и отправки формы через 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!"

new.js.erb

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

Note.initializeForm();

create.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
jquery-validate

1 ответ

0
Лучший ответ

Проблема заключалась в синтаксисе запроса проверки. Я передавал функцию вместо объекта.

Правильный способ вызвать validate из CoffeeScript:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню