首页 > 解决方案 > Rails 在 ajax 上嵌套 Ajax 表单:仅发送顶级表单

问题描述

我有一个 ajax 表单,它有一个远程真正的 link_to 和一个嵌套的远程表单,它会导致其他操作。

我需要使用监听器在顶级表单上执行一些操作:

$(document).on('ajax:send', 'form[data-remote=true]', function (event) {
    event.stopPropagation();
    var $form = $(this);
    ...
    $form.unbind("ajax:success").on('ajax:success', function (data) {
        // do something
    }).on('ajax:complete', function () {
        // do something else
    });
});

问题是无论我做什么,嵌套的 link_to 和嵌套的表单都会触发这个监听器。

遗憾的是,我最终偏离了 Rails 标准,这不是我的问题所在,只是你如何告诉on('ajax:send)函数只有在表单是最上面的时候才能工作?我在想也许可以从 ajax:send 返回的数据中获取 URL

$(document).on('ajax:send', 'form[data-remote=true]', function (event) {
  [data, status, xhr] = event.detail
...

但这感觉就像一场噩梦。有什么建议么?

标签: ruby-on-railsajax

解决方案


推荐阅读