【rails6】form의 송신을 해도 페이지가 천이하지 않는 문제의 해결

2150 단어 루비Rails6
안녕하세요!

오늘도 응용 프로그램의 문제를 조사하고 있었는데, 예상치 못한 실수를 발견했으므로 공유합니다.

발생한 문제



앱의 양식, 제출 버튼(submit)을 눌러도 화면이 전환되지 않음

실제로 현상을 확인하십시오.



보이지 않지만,
'채팅 시작' 버튼을 연타하고 있습니다.

이 코드를 확인하십시오

show.html.erb
<%= form_with model: @room do |f| %>
  <%= fields_for @entry do |e| %>
    <%= e.hidden_field :user_id, value: @user.id %>
  <% end %>
  <%= f.submit "チャットを始める", class:"mini-send-btn user-show-chat" %>
<% end %>

문제는 이 곳
<%= form_with model: @room do |f| %>

사실 form_with에는 turbolinks가 관련되어 있다고합니다.
나는 여러가지 사정으로 turbolinks를 해제하고 있기 때문에, 이것으로는 화면 천이를 할 수 없는 것도 납득이군요.

해결 방법



해결책은 다음 두 가지가 있습니다.

①turbolinks 켜기

app/javascript/packs/application.js
require("turbolinks")  // 初期設定ではONになってますが、ご確認ください

②이 폼으로 Ajax 통신을 사용하지 않는다(local: true를 추기합니다)

show.html.erb
<%= form_with model: @room, local: true do |f| %>   # local: trueを追記します

그럼 이것으로 해보자!
나는 ②의 방법으로 갈거야.

먼저 방금 코드를 고쳐

show.html.erb
<%= form_with model: @room, local: true do |f| %>
  <%= fields_for @entry do |e| %>
    <%= e.hidden_field :user_id, value: @user.id %>
  <% end %>
  <%= f.submit "チャットを始める", class:"mini-send-btn user-show-chat" %>
<% end %>



이것으로 해결이군요!
지금까지 아무렇지도 않게 쓰거나 쓰지 않았던 기술이지만, 매우 중요한 일이라고 인식했습니다.

※이 GIF에 있는 또 다른 실수는 놓치세요, 앞으로 고쳐

좋은 웹페이지 즐겨찾기