关于javascript:Rails 5 Re-enable form submit after success send_data

Rails 5 Re-enable form submit after successful send_data

在我的 Rails 5 应用程序中,表单的默认提交按钮在提交时被禁用,以防止意外的重复提交。每当页面在提交后被重定向或重新呈现时出现验证错误,按钮就会再次启用。

在我的情况下,我让控制器发送一个 zip 文件,我在控制器操作中使用以下内容在内存中构建该文件:

send_data zip.read, filename:"some_file.zip"

但是,在提供文件后,表单并未重新启用。我必须按 ctrl-F5 页面来重置表单并能够做出不同的选择。

rails 的方法是什么?


我遇到了类似的问题,并通过使用 button_tag 而不是 submit_tag 解决了。这不会重新启用表单,但会阻止它被禁用。


看看这种结合客户端和服务器来检测下载事件的方法:
检测浏览器何时接收文件下载


您可以通过添加附加 data: { disable_with: false }.

来保持启用 submit_tag

或者在表单提交几秒钟后启用它?

1
2
3
4
5
6
7
8
9
 $("#my_form_id").submit(function(){
    setTimeout(() =>{
     
      // Enable submit button or enable all
      // $.rails.enableFormElements($($.rails.formSubmitSelector))
      $.rails.enableFormElement($("#my_form_id [type='submit']"))

    }, 3000)
  })