Rails form_tagとform_forの違い

27日目です。
本日form_tagとform_forを理解しました。 これらはRailsのビューにて情報を送信するためのヘルパーメソッドであり、入力フォームに必要なHTMLを作成できる点が共通しています。 HTMLのform要素で入力フォームを作成することもできますが、セキュリティの面から上記の使用をすることが決まっています。

主な違い

form_tag

検索など、データベースの情報を変更するときではない場合に使う。
基本形
<%= form_tag('パス', 'オプション') do %>
<% end %>

paramsで送られてくる場合は、以下のようなハッシュになる
例)params = { name: "入力された名前", detail: "入力された詳細" } }

form_for

データベースに情報を登録したり更新したりする時に使う。
基本形
<%= form_for('モデルクラスのインスタンス') do |f| %>
フォーム内容
<% end %>

paramsで送られてくる場合は、以下のようにハッシュが二重構造になる
例)params = { book: { name: "入力された名前", detail: "入力された詳細" } }

そのため、ストロングパラメーターを使う場合「require」を使って一重構造に戻す。
params.require(:book).permit(:name, :detail)

スクールの同期がツイッターで紹介してくれていた下記のサイト参照しましたが、ものすごく丁寧に解説してくれて整理するのに役立ちました。
form_forがどのように送信先を指定してくれているかも書いてあります。

www.pikawaka.com

www.pikawaka.com


優秀な同期はとっくに試験を終え、応用カリキュラムでどんどん先にいっている中で自分はRailsやHTMLの復習をしているのはなかなか辛いですが、今は飛躍のための地固めだと言い聞かせて理解に努めます(起きている間はほぼ取り組んでいるので、決して遅れている訳ではないですが、思うように進まないのは歯がゆいところです)。 自分が設定した本試験予定は月曜日なので、その先はバリバリ応用を進めていきます。