Railsでフォームを作るときに使う『form_for』と『form_tag』の違い
Railsで入力フォームを作るには、2つの方法があります。「form_tag」と「form_for」です。
form_forとform_tagの違い
「form_tag」と「form_for」どちらを使うべきかは、基本的にモデルの有無で判断します。入力フォームで入力するデータのモデルがあれば「form_for」を使い、入力するデータが特にモデルを持っていなければ「form_tag」を使います。
- form_for: モデルがあるデータを扱うときに使う。(記事投稿フォームなど)
- form_tag: モデルがないデータを扱うときに使う。(検索フォームなど)
form_for
モデルへデータを追加したり、変更したりするためのフォーム。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タグを表示
コメント