Ich habe ein seltsames Problem, bei dem ein Ajax-Formular zweimal eingereicht wird.Warum ist das Ajax-Formular zweimal bei Checkbox-Änderungen einzureichen?
# view
<%= simple_form_for user, remote: true do |f| %>
<%= f.input :approved,
as: :boolean,
input_html: { class: 'submit-on-select' } %>
<%= f.submit %>
<% end %>
# js
$("input:checkbox.submit-on-select").each ->
$(this).closest('form').find('input[type="submit"]').each ->
$(this).addClass('hidden')
$("input:checkbox.submit-on-select").on 'change', ->
$form = $(this).closest('form')
$form.submit()
Ein Klick auf die Checkbox, sollte das Formular abzuschicken, aber die Protokolle ein Doppel einreichen mit dem approved
zeigt zum Ändern jeder einreichen
Started PATCH "/en/users/23" for 127.0.0.1 at 2017-01-13 07:25:40 +0700
Processing by UsersController#update as JS
Parameters: {"utf8"=>"✓", "user"=>{"approved"=>"0"}, "locale"=>"en", "id"=>"23"}
Started PATCH "/en/users/23" for 127.0.0.1 at 2017-01-13 07:25:40 +0700
Processing by UsersController#update as JS
Parameters: {"utf8"=>"✓", "user"=>{"approved"=>"1"}, "locale"=>"en", "id"=>"23"}
ich versucht habe, wie unten die JS zu ändern, aber die Doppel-Post weiter:
...
$form.unbind('submit').submit()
Ich versuche herauszufinden, was die Doppelpost verursacht. Im Chrome-Entwicklerbereich werden auf der Registerkarte "Netzwerk" zwei Post-Ereignisse angezeigt, die in der Initiatorspalte jedoch genau denselben Verlauf aufweisen.
Was könnte diesen Doppelpost verursachen, und was ist ein vernünftiger Ansatz, um dies zu debuggen?
haben Sie versucht, Turbolinks zu deaktivieren? – Milind
danke @Milind Ich denke nicht, dass Turbolinks in dieser App aktiviert ist. Es ist nicht in der application.js manifest oder gemfile –
Unrelated, aber Sie müssen '.each' mit' .addClass() 'nicht verwenden, rufen Sie es direkt auf der Auswahl und es wird auf alles funktionieren. – Barmar