当我尝试提交一个AJAX复选框时,如果复选框没有被选中,我就不会得到作为参数传递的值。我知道在普通表单中,Rails为复选框添加了一个同名的隐藏字段,值为0,但这在这里不起作用,因为只有一个输入被序列化,而不是整个表单。
<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提出了一个pull请求,并提供了解决方案,但一年多后仍未被接受
日志文件可能如下所示:
点击复选框:
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"}
单击复选框关闭:
Started POST "/tasks/1" for ::1 at 2020-02-27 15:55:52 +0000
Processing by TestController#test as JS
Parameters: {"id"=>"1"}
1条答案
按热度按时间jm81lzqq1#
我只需要创建一个表单和一个事件处理程序,当输入发生变化时,它会提交表单:
这比试图让Rails-UJS处理复选框所涉及的陷阱要简单得多。