Rails Turbolinks多次提交远程真实表单

时间:2019-06-17 21:06:26

标签: ruby-on-rails ruby ajax ruby-on-rails-4 turbolinks

使用涡轮链接并提交远程真实表单会导致问题,即表单提交了多次。

就像我多次访问页面然后提交要远程提交的表格一样。它提交了多次。此问题是由于Turbolinks引起的,因为Turbolinks README Working with Script Elements的部分建议在安装事件处理程序时避免使用内联脚本:

这是我的表单代码

<%= form_for 'user', :url => otp_path, :html => { :id => "user_login_form1" }, :remote => true, format: :json do |f| %> 
   <%= f.submit "Submit", id: 'user_login_form1_submit','data-disable-with' => 'Progressing...' %>
<% end %>

在同一视图中,我正在使用jquery提交

$(document).on('click','#user_login_form1_submit',function(ev){
    ev.preventDefault();
    jQuery('form#user_login_form1').submit();
});

我不想从我的网站中删除涡轮链接,而是如何处理多次提交远程真实表单的问题?

1 个答案:

答案 0 :(得分:0)

如果您想添加一些验证而不丢失rails处理程序,请执行以下操作:

$(document).on('ajax:before','#user_login_form1', function(ev) {
  let valid = .....
  if (!valid) return false;
});

检查文档(我猜您正在使用jquery_ujs):https://guides.rubyonrails.org/working_with_javascript_in_rails.html#stoppable-events

如果您使用rails-ujs,请执行ev.preventDefault()stopEverything(ev)