jquery - 使用 UJS、Rails 将数据添加到 AJAX 请求

标签 jquery ruby-on-rails ajax ujs

我有一个包含 link_to 的 text_field_tag:

<div>
  <%= text_field_tag :requester_field %>
  <%= link_to "Add", add_requester_tasks_path, id: "requester_btn", remote: true %>
</div>

使用rails UJS单击“添加”按钮将触发AJAX请求到由add_requester_task_path指定的 Controller 操作。我可以使用 respond_to block 将脚本返回到浏览器。

向此请求添加 text_field 值的最佳方式是什么?

所以我可以通过参数哈希在 Controller 中访问它。

我所说的最佳方式是指最干净的方式,即使用 UJS。我查看了一些 ajax:callbacks 但我无法弄清楚向请求添加数据的方法。

我正在使用 JS CoffeeScript 。 此代码是创建任务的更大表单的一部分。任务有_许多请求者。此代码将根据在文本字段中输入的电子邮件地址填充请求者列表。提交表单会将请求者链接到任务。这就是为什么我不能在表单中使用表单的原因。

最佳答案

根据 charlietfl 的建议,我查看了 UJS 源代码(最终非常短......)。

我想出了这个解决方案:

您的链接上需要有 remote: true 才能启用 UJS。

您需要将此代码添加到您的 js/coffee 文件中(代码假设 Turbolinks 已准备好 DOM)

ready = -> 
  $("#requester_btn").on "ajax:before", (event, xhr, settings) -> 
    $(this).data('params', $("#requester_field").serialize()) 
    return

$(document).on("page:change", ready)

使用文本字段的序列化值将数据参数添加到链接将使 UJS 发挥其魔力。

关于jquery - 使用 UJS、Rails 将数据添加到 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863500/

相关文章:

jquery - 如何使用ajax和其他附加字段上传文件?

javascript - jquery.click 之后更新 HTML 页面

javascript - 使用 DOM 遍历获取 attr 值失败

javascript - 单击打开 Accordion ,第二次单击关闭 Accordion

ruby-on-rails - rake 数据库 :migrate not working for me

ruby-on-rails - 如何允许 Rails 文本区域中的段落类似于 ckeditor 等 html 文本编辑器?

c# - Ajax 调用开始像怪胎一样加载

javascript - 在 ajax 调用的回显页面中设置 cookie

ruby-on-rails - smalltalk 的 sinatra 是什么?

javascript - 使用 AJAX 源时,Typeahead 会使用 'undefined' 填充下拉列表