단일 입력 필드 인 페이지에 양식이 있습니다. 사용자가 입력을 눌러 양식을 제출할 수 있기를 바랍니다. 죄송하지만 enter
을 제출하면 양식이 여러 번 제출됩니다. 서버에 여러 POST 요청이 전송 되었기 때문에 양식이 여러 번 제출되고 있음을 알고 있습니다. 개발과 생산 모두에서 발생하며 간헐적으로 만 발생합니다. 내가 폼에 f.submit
를 추가하는 경우'Enter'를 사용하여 여러 번 원격 양식을 제출하는 레일
= form_for thing, remote: true do |f|
= f.text_field :name, placeholder: "hit enter to submit"
, 한 번만 제출합니다.
차이점이 있다면 application.js
에 포함 된 turbolinks
및 jquery_ujs
이있는 레일 5입니다. 나는 약간 변경 한 후 재현 할 수 없었던
UPDATE.
페이지에 여러 번로드 된 jquery_ujs
과 관련된 문제라고 생각됩니다. 이는 turbolinks
때문입니다. 더 정확히 말하면, 내가 모든 자바 스크립트를 body
태그에 포함하고 있었다는 사실 때문입니다. turbolinks
은 head
태그에 자바 스크립트 파일을 추가 할 것을 제안합니다. 그렇게했기 때문에 오류를 재현하지 못했습니다.
숨겨진 제출 버튼을 사용하지 않는 이유는 무엇입니까? – trueinViso
@trueinViso 터보 링크를 제거한 후에도 복제 할 수 없었습니다. 터보 링크 때문에 jquery_ujs가 페이지에 두 번 추가되는 경우가 많아서 여러 제출 작업이 발생했습니다. –