箱のプログラミング日記。

渋谷の自社開発企業でRails書いてます。

form_forの書き方・使い方

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 %>