#はじめに
Railsにてポートフォリオ作成中です。今回は何かしらのフォーム(投稿やログイン)で使用している、form_withについて、改めて復習をしたいと思います。
#環境
Ruby 0n Rails '6.0.0'
Ruby '2.6.5'
#form_withとは?
アプリケーションを使用するクライアントがリクエストを送るために使用するヘルパーメソッド。form_withを使うことにより、簡単に入力フォームに必要なHTMLを作成することができる。
Rails5以前では、rails_forやrails_tagなどもあったみたいですが、現在はform_withの使用が推奨されているみたいです。
#使用方法
大きく分けて2つの使用方法があります。
<%= form_with url: posts_path, method: :post, local: true do |form| %>
<%# フォームの内部 %>
<% end %>
<%= form_with(model: @tweet, local: true) do |form| %>
<%# フォームの内部 %>
<% end %>
違いは、URLを指定しているか、モデルを指定しているかの違いです。対応するモデルがあり、データベースに保存する場合は②の「model」を使用し、モデルクラスのインスタンスを指定することで、送信された情報がデータベースに保存できます。
また、対応するモデルがない場合は①「url」を使用することで、指定したパスに情報を送信することができます(データベースへの保存はされない)。
#local_trueってなに??
先ほどの例でも記載していますが、form_withの中に「local_true」の記述があります。記述があるときとないときの違いがわかっていなかったので、記載します。
local: trueの役割
👉form_withではデフォルトでajax通信が行われる仕様のため、「local: true」を使用し、ajax通信をキャンセルしている。
つまり、非同期通信でコメント機能などを作成するときには投稿フォームには「local: true」を付けずに、HTML通信を使用してフォームの内容を送信する場合には「local: true」を付けるということですね!!!
#おわりに
今回はこちらの記事を参考にしました。
https://pikawaka.com/rails/form_with
ありがとうございました。