Ruby on rails 在Rails UJS中获取AJAX复选框值

Ruby on rails 在Rails UJS中获取AJAX复选框值,ruby-on-rails,ajax,rails-ujs,Ruby On Rails,Ajax,Rails Ujs,当我尝试提交一个AJAX复选框时,如果复选框没有被选中,我就不会得到作为参数传递的值。我知道在普通表单中,Rails为复选框添加了一个具有相同名称和值0的隐藏字段,但这在这里不起作用,因为只有一个输入被序列化,而不是整个表单 <input type="checkbox" name="task[1]" id="task_1" value="1" data-url="/tasks/update" data-remote="true" data-method="patch"> 单击复选框

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

<input type="checkbox" name="task[1]" id="task_1" value="1" data-url="/tasks/update" data-remote="true" data-method="patch">
单击复选框关闭:

Started POST "/tasks/1" for ::1 at 2020-02-27 15:55:52 +0000
Processing by TestController#test as JS
  Parameters: {"id"=>"1"}

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

<% form_for task, remote: true do |f | %>
  <%= f.check_box :completed, class: 'submit-on-change' %>
<% end %>

与尝试让Rails UJS来处理相比,这要简单得多。

我很感激你可以这样做,但是如果他们的特定示例不起作用,为什么他们在文档中鼓励我们用UJS的方式来处理呢?你可以发布日志吗?@7urkm3n添加了示例日志文件尝试在触发补丁之前动态更新输入值<代码>对象.addEventListener(“更改”,myScript)
<% form_for task, remote: true do |f | %>
  <%= f.check_box :completed, class: 'submit-on-change' %>
<% end %>
// 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();
  }
});