首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rails-UJS中获取AJAX复选框值

在Rails-UJS中获取AJAX复选框值
EN

Stack Overflow用户
提问于 2020-02-27 21:15:31
回答 1查看 427关注 0票数 0

当我尝试提交一个AJAX复选框时,如果复选框未被选中,我不会得到作为参数传递的值。我知道在普通表单中,Rails为复选框添加了一个具有相同名称和值0的隐藏字段,但这在这里不起作用,因为只有一个输入被序列化,而不是整个表单。

代码语言:javascript
复制
<input type="checkbox" name="task[1]" id="task_1" value="1" data-url="/tasks/update" data-remote="true" data-method="patch">

我使用的是Rails-UJS,如下所述:https://guides.rubyonrails.org/v5.2/working_with_javascript_in_rails.html#data-url-and-data-params

我还在JQuery-UJS中找到了这个:https://github.com/rails/jquery-ujs/wiki/Unobtrusive-scripting-support-for-jQuery-%28list-of-data-attributes%29#data-url

This issue对此进行了讨论,@yourivdlans提出了拉取请求和解决方案,但一年多后仍未被接受

日志文件可能如下所示:

单击以下复选框:

代码语言:javascript
复制
Started POST "/tasks/1" for ::1 at 2020-02-27 15:55:37 +0000
Processing by TestController#test as JS
  Parameters: {"task"=>"1", "id"=>"1"}

单击关闭复选框:

代码语言:javascript
复制
Started POST "/tasks/1" for ::1 at 2020-02-27 15:55:52 +0000
Processing by TestController#test as JS
  Parameters: {"id"=>"1"}
EN

回答 1

Stack Overflow用户

发布于 2020-02-27 21:39:29

我只需要创建一个表单和一个事件处理程序,以便在输入更改时提交表单:

代码语言:javascript
复制
<% form_for task, remote: true do |f | %>
  <%= f.check_box :completed, class: 'submit-on-change' %>
<% end %>
代码语言:javascript
复制
// put this in the assets pipeline / webpacker
document.addEventListener('change', function(e){
  if (e.target.matches('.submit-on-change') && e.target.form){
    e.target.form.submit();
  }
});

这比尝试让Rails-UJS处理the gotchas involved with checkboxes要简单得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60434100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档