form_forがなかなか理解できず、いつもコピペでしたが
ついにしっかり理解しなきゃいけない日が来たので、ざっと調べてみました。
form_forの基本構文
form_forはRailsのヘルパーのひとつで、
HTMLで言うところのformタグの役割を果たします。
form_forのメリット
- HTMLで記述するよりもかなり少ない量で済むので楽
- HTMLで記述するよりもセキュリティに強い
form_forとform_tagの違い
Railsのヘルパーでformを作ってくれるものといえば、form_tagがあります。
もともとHTMLをある程度勉強していた私にとっては、
このform_tagの方が直感的で分かりやすかったのですが
実際のRailsを使ったアプリケーション開発では、form_forを用いた方が好まれる模様。。
というのも、form_forはHTTPメソッドを自動的に判定してくれるからです。
判定と言っても、「create」か「update」(つまりHTTPメソッドだとpostかpatch)の二種類のうちどちらか。
指定されたモデルに同じデータが無ければ新しく作り(create)、
すでにある場合は更新してくれる(update)というものです。
<%= form_for(@article) do |f| %>
~~中身~~
<% end %>
ここで引数内に書かれている@articleはarticleモデルを示しています。
HTMLのformタグでいうところの action ="article" に替わるものです。
中身はどうやって書くのか
いろんなところをググっても、なかなか無かった中身の解説。。。
HTMLのformタグから変換したい時に困ったので、具体的な例を載せておきます。
<%= form_for(@article) do |f| %>
<%= f.label :名前 %>
<%= f.text_field :name %>
<%= f.label :内容 %>
<%= f.text_area :content %>
<%= f.submit "追加" %>
<% end %>