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