Railsでフォームを作るときに使う『form_for』と『form_tag』の違い

Railsで入力フォームを作るには、2つの方法があります。「form_tag」と「form_for」です。

form_tag」と「form_for」どちらを使うべきかは、基本的にモデルの有無で判断します。入力フォームで入力するデータのモデルがあれば「form_for」を使い、入力するデータが特にモデルを持っていなければ「form_tag」を使います。

  1. form_for: モデルがあるデータを扱うときに使う。(記事投稿フォームなど)
  2. form_tag: モデルがないデータを扱うときに使う。(検索フォームなど)

モデルへデータを追加したり、変更したりするためのフォーム。scaffoldを使って実装すると、ビューファイルのデータ追加画面や編集画面でform_forを使っているのがわかります。

form_forの使い方
<% form_for(モデル名) do |f| %><% end %>

form_for内で使えるメソッド

  • f.label    → labelタグを表示
  • f.text_field  → textのinputタグを表示
  • f.date_select → モデルで設定したフィールドをselectタグで選べるようにして表示
  • f.check_box → checkboxのinputタグを表示
  • f.submit   → submitのinputタグを表示
メッセージ:
C D H X E