はじめに
railsの勉強をしていて、避けては通れないform_for
というヘルパーメソッド。今回はこのなんども使うことになるform_forの使い方をもう一度おさらいしていこうと思い、この記事に着手した。
form_forとは
form_forは先述した通りrailsのヘルパーメソッドであり、モデルの編集や追加などに使われるメソッドである。つまり、特定のテーブルに対して、レコードの追加やレコードの編集などを行いたい時に、form_for
を用いると簡単にその記述が書けてしまう優れものであるということ。
使い方
基本的な使い方は以下の通り。
<%= form_for(モデルクラスのインスタンス) do |f| %>
…
<% end %>
使いたいモデルのインスタンスを引数として渡すことがポイントとなる。
この時に、渡したインスタンスが情報を持っていなければcreate
アクションを、インスタンスが情報を持っていたらupdate
アクションを行うようになっている。この点が非常に便利となっている一つである。
メソッドの使い方はf.htmlタグ名 :カラム名
と指定することで対応するformの作成をすることができる。詳しくはrailsの公式ドキュメントを参照。
form_tagとの違い
そして勉強しているときによく似たものとして出てくるのが、form_tag
という存在。この違いを明確にすることで、要所でform_for
を扱うことができるようになるだろう。
この二つの大きな違いは、モデルを介する操作かどうかというところによる。
例えば、入力データがモデルを持っていれば、モデルにレコードの追加編集ということでform_for
を扱い、入力データがモデルを持っていなければ、単にデータを特定の要件で扱うだけということでform_tag
を用いる。
form_tagはモデルにレコードとして追加しないため、検索窓、などを作成する時に用いると効果的に扱うことができる。
まとめ
今回はform_for
およびにform_tag
についてまとめてみた。railsを勉強していたら必ずと言っていいほど扱うことになるため、きちんと用途を抑えて扱えるようにしておきたいところだ。