#解決方法
formヘルパー内でlocal
属性をtrue
に指定する
###例
<%= form_with model: @model, local: true do |f| %>
#以下詳細
(注意:根本原因にあたる「Ajax通信」についての知識が甘いため、見当違いのことを書いている場合があります。その場合はお手数ですがコメントでご指摘いただけると幸いです。)
##画面遷移しない状況
dbに取得した値を保存する際、「form->確認画面->result」というように確認画面をはさむと「form->確認画面」で画面遷移しなかった
##理由
railsのデフォルト設定ではformヘルパー内でdata-remote="true"
が指定されており、Ajax通信が行われるため。
##解決方法
form内でlocal: true
を指定することでAjax通信(remote + unobtrusive XHR送信)が無効になる。
###Ajaxとは
(https://railsguides.jp/working_with_javascript_in_rails.html より引用)
Ajaxを理解するには、Webブラウザの基本的な動作について理解しておく必要があります。
ブラウザのアドレスバーにhttp://localhost:3000 と入力して'Go'を押すと、ブラウザ (つまりクライアント) はサーバーに対してリクエストを1つ送信します。ブラウザは、サーバーから受け取ったレスポンスを解析し、続いて必要なすべてのアセット (JavaScriptファイル、スタイルシート、画像) をサーバーから取得します。続いてブラウザはページを組み立てます。ブラウザに表示されているリンクをクリックすると、同じプロセスが実行されます。ブラウザはページを取得し、続いてアセットを取得し、それらをすべてまとめてから結果を表示します。これが、いわゆる「リクエスト-レスポンス」のサイクルです。
JavaScriptも、上と同様にサーバーにリクエストを送信し、レスポンスを解析することができます。JavaScriptはページ上の情報を更新することもできます。JavaScriptの開発者は、ブラウザとJavaScriptという2つの力を1つに結集させることで、現在のWebページの一部だけを更新することができます。必要なWebページをサーバーからすべて取得する必要はありません。この強力な技法が、Ajaxと呼ばれているものです。