Rails:无法提交通过 Ajax 加载的远程表单

2023-11-24

Goal

我有一个包含来自 Rails 后端的项目列表的页面。我希望能够通过 Rails UJS 使用 Ajax 调用来编辑该列表中的一行。

Approach

我在每行的末尾添加了一个编辑按钮。编辑按钮是一个link_to ... :remote => true。单击它会再次加载列表,但会显示所选内容 处于编辑模式的行。可编辑行嵌入在form ... :remote => true。 该行中的保存按钮是submit button.

索引.html.haml

#editor
  %table
    - @items.each do |item|
      %tr
        = render :partial => 'row', :locals => { :item => item }

_row.html.haml

... 
%td // a number of columns with attributes
...
%td
  = link_to t("actions.edit"), edit_item_path(item), :remote => true
  = link_to t("actions.delete"), item_path(item), :remote => true, :method => :delete, :data => { :confirm => "Are you sure?" }

编辑.html.haml

#editor
  %table
    - @items.each do |item|
      %tr
        - if item == @item
          = form_for @item, :url => item_path(@item), :remote => true, do |f|
            = render :partial => "row_form", :locals => { :f => f }
        - else
          = render :partial => 'row', :locals => { :item => item }

_row_form.html.haml

... 
%td // a number of columns with editable attributes
...
%td
  %button{ :type => "submit" }=t("actions.save")
  = link_to t("actions.cancel"), items_path, :remote => true

Ajax 响应处理

$("#editor").on("ajax:success", function(event, data, status, xhr) {
  $("#editor").html($(data).find("#editor").html());
});

Problem

当我在编辑模式下加载列表页面时/items/12/edit,第 12 项的行是 可编辑。单击“保存”按钮可通过 Ajax 正确提交表单并加载 这/items索引部分,用 jQuery 替换可编辑列表。点击 再次点击编辑按钮,再次加载编辑页面(例如/items/12/edit), 和 嵌入的形式。只是这一次,表单不再提交 单击“保存”按钮。提交事件处理程序似乎没有附加到 动态加载远程表单。

Question

如何提交通过 Ajax 加载的远程表单(最好使用 Rails UJS 方法)?

重复项

我知道这个问题有重复,但没有一个得到回答。希望最终有人能给出明确的答案。

  • 文档准备好后通过 Ajax 加载的 Rails 远程表单未提交
  • 通过 ajax 加载的表单上的 :remote => true/data-remote

问题是 DOM 被 javascript 修改,回调(在你的例子中 ajax 成功)仅在 DOM init 上初始化。因此,当 DOM 更改(在 #editor 的一部分)时,回调不起作用。

因此,每次使用 javascript 更改 DOM 时,都应该重新初始化此回调

$("#editor").on("ajax:success", function(event, data, status, xhr) {
  $("#editor").html($(data).find("#editor").html());
});

不久前,jQuery 有一个名为“live”的功能。它的工作方式类似于“on”,但跟踪 DOM 变化。但在当前版本的 jQuery 中,该函数已被弃用,因为它速度很慢。

希望你能理解我糟糕的英语 =)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:无法提交通过 Ajax 加载的远程表单 的相关文章

  • Rails/heroku 从 gem 迁移到 toolbelt

    我曾经在一个项目中使用过 heroku gem 既然工具带已经出来了 我想换一个 我从 Gemfile 中删除了 gem 并通过 gem uninstall heroku 卸载了它 我使用heroku网站上的pkg安装了heroku工具带
  • 从“class”名称中删除/替换不需要的前缀信息

    我正进入 状态style从后端 它带有不需要的前缀 我会替换没有前缀的相同内容 正确的方法是什么 这就是我得到的
  • 将 JSON 发送到 Spring MVC 控制器

    我正在尝试将 JSON 发送到 Spring MVC 控制器 在 Spring MVC 方面 一切都配置正确 下面是代码 但似乎没有运行
  • 动态分配背景图片scss/sass

    我想要做的是有一个表单 您可以在其中上传图片 然后当您查看该对象时 图片会在特定 div 中居中 垂直和水平向上倾斜 其大小未知等 除非有办法使用 image tag 帮助器将其垂直居中 否则我希望能够使用该图像作为背景图像 在我的 css
  • jQuery / CSS3 动画阴影效果

    所以这个问题可能会被否决 但我认为有人可能会提供帮助 我正在寻找的效果是蓝色块像气球一样上下盘旋 当块上 下移动时 阴影在其下方不断增大和缩小 关于如何编程的任何想法 或者有人知道可以完成的教程 插件吗 你可以使用 jQuery 来完成 或
  • jQuery float bar 数字:数字定位

    我在用着jquery flot barnumbers js https github com joetsoi flot barnumbers 的插件jQuery 的 Javascript 绘图 图表 库 https github com f
  • 如何在 jQuery 中创建 qrcode 的下载链接?

    我在用着goqr me http goqr me 用于创建二维码图像的 api 现在我想创建一个二维码图像的下载链接 我这样创建 qrcode 图像 function generateQrcode data var params data
  • 根据所选选项更改表数据

    我有一个表显示数据库中的数据 我有一个选择框 人们可以在其中选择他想要显示数据的货币 当他这样做时 我需要刷新数据并显示为新货币 我不知道如何在不刷新整个页面的情况下做到这一点 有什么想法吗
  • 如何制作像Stackoverflow一样的可折叠评论框

    我正在构建一个网站 并且有一个状态更新列表 我希望允许用户为列表中的每个项目撰写评论 但是我正在尝试实现一个类似于堆栈溢出工作方式的用户界面 特别是可折叠的评论表单 列表 用户在其中单击对列表中的特定状态更新添加评论 并且在列表中的该项目下
  • 从 DOM 中删除后,动态添加的 JavaScript 脚本会继续执行

    因此 我正在创建一个 SPA 并使用 AJAX 将 HTML 页面加载到我网站的索引页面中 问题是 当包含我的一个页面时 它似乎会徘 徊并执行其中的 JavaScript 代码 即使它随后从 DOM 中删除 索引 html 正文 div d
  • 记录jQuery中调用的方法和参数

    假设我有 jQuery 并且加载了几个插件 我运行一些这样的代码 someSelector someMethod someParam someOtherParam someOtherSelector someOtherMethod anot
  • 如何将 webmethod 与 telerik 批量编辑网格一起使用

    Work on Asp net vs2012 C telerik RadGrid batch edit I put save button outside from the grid Under the save button want t
  • 区分单击与 mousedown/mouseup

    我已经阅读了有关这种情况的 stackoverflow 上的几个答案 但没有一个解决方案有效 我尝试根据用户是否单击某个元素或使用 jQuery 将鼠标按住该元素来执行不同的操作 有可能做到这一点吗 onMouseDown 将在按下左侧或右
  • 如何使用 CSS 将 div 置于表格中心?

    我正在尝试向我的网站之一添加幻灯片 整个页面布局在一个 HTML 表格中 我非常讨厌它并且没有选择 我想将我的幻灯片放在该特定列的中心 我的 CSS 如下所示 slideshow position relative slideshow IM
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 如何检查jquery数据表中的每个复选框?

    我有一个第一列带有复选框的表格 我使用 jQuery DataTable 插件显示我的表格 我制作了 2 个链接来选择 取消选择每个复选框 这是选择全部的一个 a href Select all a 和 JavaScript functio
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • Google 地图 v3 中标准缩放控件的样式

    有没有一种简单的方法可以在 Google Maps JavaScript API v3 中设置缩放控件的样式 我想要的只是改变标准图像 http maps gstatic com intl en ALL mapfiles mapcontro
  • 单击react.js 切换列表的背景颜色

    我正在尝试创建一个具有以下功能的列表 悬停时更改列表项的背景颜色 单击时更改列表项的背景颜色 在单击的元素之间切换背景颜色 即列表中只有一个元素可以具有 clicked 属性 我已经执行了 onhover 1 和 2 功能 但无法实现第三个
  • 获取 2 个日期之间的月份名称

    我有两个约会from and to 我想获取这两个日期之间的所有月份名称 以下是我的代码 var monthNames January February March April May June July August September

随机推荐

  • Powershell 彩色目录列表在格式范围内不正确

    我从这里得到了这个彩色目录脚本http tasteofpowershell blogspot com 2009 02 get childitem dir results color coded html function ls regex
  • JPA 和 JSON 运算符本机查询

    我试图让这个查询在 JPA 中工作 SELECT FROM contrat WHERE contrat json gt nom hever 它完美地与postgresql但是当我将它与JPA集成时 出现以下错误 该位置 1 的参数不存在 M
  • 给定 N 个生成器,是否可以创建一个在并行进程中运行它们并生成这些生成器的 zip 的生成器?

    假设我有 N 个生成器gen 1 gen N其中每个都会产生相同数量的值 我想要一台发电机gen这样它就可以在 N 个并行进程中运行 gen 1 gen N 并产生 next gen 1 next gen 2 next gen N 这就是我
  • 静态 HttpClient 仍在创建 TIME_WAIT tcp 端口

    我在 NET Framework 4 5 1 4 6 1 和 4 7 2 中的 HttpClient 中遇到了一些有趣的行为 由于 TCP 端口使用率高的已知问题 我建议在工作中的项目中进行一些更改 以便在每次使用时不处理 HttpClie
  • C++ 异常:抛出 std::string

    当我的 C 方法遇到奇怪的事情并且无法恢复时 我想抛出异常 可以扔一个吗std string指针 这就是我期待做的事情 void Foo Bar if QueryPerformanceTimer m baz throw new std st
  • 投影球体的半径

    我想完善一个上一个问题 如何将球体投影到屏幕上 2 给出了一个简单的解决方案 approximate radius on screen CLIP SPACE world radius cot fov 2 Z with fov field o
  • 相对于容器以百分比宽度定位固定元素

    我知道position fixed使元素相对于视口而不是它的offsetParent但是我有一个问题 我有一个侧面元素需要x空间量 然后是一些固定位置标题元素 我想占用剩余视口宽度的一定百分比 参见小提琴 http jsfiddle net
  • 如何防止自动 AJAX 攻击

    如何防止用户自动发帖 垃圾邮件 Here is my way这样做时 每个页面请求都会有新的 php 会话 这有其自身的局限性 没有多选项卡 我为每个页面使用了新会话来防御 CSRF 和自动攻击 假设我们有一个使用 AJAX 发布线程的论坛
  • 使用 JavaScript 检测对 Iframe 的点击

    我知道不可能知道用户在内部做什么iframe如果是跨域的话 我想做的是跟踪用户是否点击了iframe 我想象一个场景 有一个看不见的东西div在上面iframe以及div然后将点击事件传递给iframe 这样的事情可能吗 如果是的话 我该怎
  • NET Standard 与 Net Core App:创建 .NET Core 项目时(使用控制台或类库)

    I am trying to develop my projects to be cross platform I have created several class libraries in this way 但是 当我使用实体框架构建
  • HDFS 文件比较

    我如何比较两个 HDFS 文件 因为没有diff 我正在考虑使用 Hive 表并从 HDFS 加载数据 然后在 2 个表上使用 join 语句 有没有更好的方法 没有diffhadoop 提供的命令 但实际上您可以在 shell 中使用重定
  • FREETEXTTABLE 的排名始终为 0

    我正在使用 SQLServer 2008 如果我执行以下查询 SELECT FROM FREETEXTTABLE SomeTable Name a name that I know exists 我得到了我期望的行 但排名始终为 0 寻找这
  • 用于参数化继承的元类

    我读过一些关于 Python 元类的教程 我以前从未使用过 但我需要一个来完成相对简单的事情 并且所有教程似乎都面向更复杂的用例 我基本上想创建一个具有一些预先指定的主体的模板类 但将其基类作为参数 由于我从 C D 模板中得到了这个想法
  • 我如何在简单的 php 函数中使用“依赖注入”,我应该打扰吗?

    我一直听到人们谈论依赖注入及其好处 但我并不真正理解它 我想知道这是否是 我始终将数据库连接作为参数传递 问题的解决方案 我尝试阅读维基百科的条目 但该示例是用 Java 编写的 因此我不太清楚它试图阐明的差异 http en wikipe
  • 使用 Win32 处理 Ctrl+C

    I have a Win32 window message loop I want to intercept Copy to clipboard via CTRL C My current approach is to handle it
  • symfony2 文件因表单错误而丢失

    我正在使用与学说相关的文件上传的标准实现 按照 symfony2 网站教程上的示例 当我的上传表单在验证中遇到错误 并将用户发送回带有错误消息的表单时 它会丢失选择上传的文件 尽管如果我 var dump 我的 entity gt file
  • 如何使用正则表达式替换字符串中的最后一个点?

    我正在尝试使用正则表达式替换字符串中的最后一个点 假设我有以下字符串 String string hello world how are you 我想用感叹号替换最后一个点 结果是 hello world how are you 我使用该方
  • 带有自定义 ArrayAdapter 的微调器,适用于不显示所选项目的对象

    我有一个自定义 ArrayAdapter 来表示微调器控件上的对象 我可以加载我的项目 列表并显示它以供选择 但是当实际选择发生时 微调器什么也不显示 活动代码 public MetroData metroData private Spin
  • 为什么某些项目在 Spy++ 的 Windows 视图中呈灰色?

    要修改另一个程序的窗口 我需要找到一个特定的SysTreeView32在其中使用EnumChildWindowsAPI 调用 当我使用 Spy 检查窗口时 有很多SysTreeView32位于其中 但除了我正在寻找的一个之外 所有其他都呈灰
  • Rails:无法提交通过 Ajax 加载的远程表单

    Goal 我有一个包含来自 Rails 后端的项目列表的页面 我希望能够通过 Rails UJS 使用 Ajax 调用来编辑该列表中的一行 Approach 我在每行的末尾添加了一个编辑按钮 编辑按钮是一个link to remote gt