rails | form_tag、form_forとform_withの違い

form_tagを使ったらダメって言われた..

form_tagはRails5.1で非推奨になったんだよ

便利なform_withというのがあるからそっちをつかおう!

そもそもこの3つは何をするもの?

情報を送信して、特定のテーブルにレコードを新規作成することができる

form_tag とは

関連するモデルがないとき、form_tagでURLを指定してフォームの送信先を指定する

データの保存はされない

form_tag('URL', methot: :メソッド名) do 中身
end

form_for とは

関連するモデルかあるとき、form_forで特定のモデルに特化したフォームを作成

データの保存をしたいときつかう

form_for(モデルオブジェクト) do |form| 中身
end

モデルがあって保存したいかどうかで使い分けていたんだね

そうそう!それが合体したのがform_withなんだ

便利すぎる..すき..

form_with とは

モデルのときもURLのときでもつかえる。

URLのとき

form_with url: "パス" do |form| 中身
end

モデルの時

form_with model: モデルクラスのインスタンス do |form| 中身
end