main discourse(61e0db0e80)에서 사용자 설정 양식을 “Enter” 키를 눌러 제출할 때(예: 이름을 변경한 후), 양식이 네이티브 방식으로 제출됩니다.
이로 인해 같은 페이지로 GET 요청이 발생하며, 데이터베이스에 변경 사항이 저장되지 않습니다.
재현 단계:
- 설정 페이지에 액세스합니다.
- 이름을 입력하거나 변경합니다.
- Enter 키를 누릅니다.
- 페이지가 새로고침됩니다.
main discourse(61e0db0e80)에서 사용자 설정 양식을 “Enter” 키를 눌러 제출할 때(예: 이름을 변경한 후), 양식이 네이티브 방식으로 제출됩니다.
이로 인해 같은 페이지로 GET 요청이 발생하며, 데이터베이스에 변경 사항이 저장되지 않습니다.
재현 단계:
메타에서 재현이 되지 않습니다. 방금 테스트해 보니 정상적으로 작동하네요.
여기서도 확인해 주실 수 있을까요?
네, 다음 환경에서 재현할 수 있었습니다:
저는 Debian 13을 사용 중이며, 두 브라우저 모두 Debian 저장소에서 설치했습니다.
매우 이상하네요. 제 브라우저(Firefox 45.0.2/Chromium: 143.0.7499.40)에서는 재현이 되지 않습니다.
라고 하셨을 때, Meta에서 테스트를 하고 있지 않은 것 같다는 생각이 듭니다.
참고로, 메타 환경에서 재현할 수 있습니다 ![]()
이름을 입력한 후 ‘Enter’ 키를 누르면 페이지가 새로고침되고 값이 비워집니다.
페이지가 새로고침되기 전에 해당 버튼을 누를 기회가 없었기 때문에, 변경 사항이 저장되지 않았거나 저장할 수 없었던 것으로 추정됩니다.
예상 시간: 데스크톱(Windows)에서 Firefox와 Chrome 양쪽 모두에서 발생하는 것으로 보입니다.
좋아, 알았어. 왜 재현이 안 되는지 궁금하네 ![]()
잘 모르겠어요
![]()
하지만 재현이 가능하다면, 어떤 부분을 확인해야 할까요? 다시 시도해 보고 정보를 제공할 수 있는지 확인해 볼게요.
예상 소요 시간: 새로고침 시 URL에 잠시 ‘?’가 추가되는 것을 확인했는데, 이 정보가 관련이 있을까요?
이 문제는 깨끗한 dv 환경에서 100% 재현 가능합니다.
최신 Chrome에서:
dv new enter-submit
http://enter-submit.localhost/session/user1/become
방문
http://enter-submit.localhost/u/user1/preferences/account
이름 변경
엔터 클릭
페이지가 다시 로드됩니다.
/frontend/discourse/app/controllers/preferences.js 파일에서 @martin / @j.jaffeux 님은 이런 것에 대해 어떻게 생각하시나요:
@action
preventSubmit(event) {
event?.preventDefault();
}
<form class="form-vertical" {{on "submit" this.preventSubmit}}>
{{outlet}}
</form>
</section>
이러한 매우 구체적인 경우에서 실제 폼이 아닌 폼을 가지고 있다는 것은 다소 이상해 보입니다.
"모든 브라우저 플러그인이 비활성화된 상태"라는 뜻이었어요 (웹사이트의 원래 동작을 깨뜨릴 수 있는 다양한 도구를 사용하거든요)
메타에서도, 그리고 완전히 새로 만든 깨끗한 개발 환경에서도 모두 테스트해 봤습니다.