Рельсы турболинк отправляют удаленные истинные формы несколько раз - PullRequest
0 голосов
/ 18 июня 2019

Использование turbolinks и отправка удаленных истинных форм, вызывающих проблему, заключается в том, что формы отправляются несколько раз.

Например, когда я захожу на страницы несколько раз, а затем отправляю форму, которая отправляется удаленно. Он представляет несколько раз. Эта проблема вызвана турболинками, так как раздел README Turbolinks * Работа с элементами скрипта рекомендует избегать встроенных скриптов при установке обработчиков событий:

Вот мой код формы

<%= 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 голосов
/ 18 июня 2019

Если вы хотите добавить некоторые проверки без потери обработчика 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).

...