我有一个包含 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/