Railsのform_tagとform_forを違いも含めてちゃんと理解する

Rubyロゴ

Ruby on Railsを勉強し始めると、便利だなぁと思うのがヘルパーメソッドの存在。
ちょこっとコードを書くだけで、いろいろなHTMLが出力されるというすぐれものに、何度Raislを描いても感銘を受けています。

今回は、Railsのform_tagヘルパーとform_forヘルパーについて、違いも含めてまとめてみることにします!

formタグに必要な要素を確認

まずは、formタグを構成するのに必要な要素ってなんだっけ?というところが確認してみたいと思います!
railsとかではなくて、HTMLの範疇の内容ですね。

formタグに必要な要素

form一式を構成する部分はformタグ(

)で囲むわけですが、formタグには少なくとも2つ必要な要素(属性)があります。

1つめは、action属性。
action属性は、formに入力されたデータの送信先を指定する部分です。データの送信先を指定しないことには、せっかくformに入力されたデータも、迷子になってしまうわけですね。

2つめは、method属性です。
PHPなどを学んで初めて出てきたりもするのですが、代表的なのはGETとPOSTです。

GETは、何かのデータを取ってきたい時に使用するものです。
Google Mapsなどがいい例で、検索フォームに入力された地名・住所などをもとに、欲しい地図を表示する(GETする)仕組みになっていますよね!
まさにformのmethod属性がGETになる典型的な例だと思います。

もう1つ代表的なのがPOST。
POSTは、formに入力されたデータを送信したい時に使います。

お問い合わせフォームなどは、入力されたデータを企業や会社・WEBサイトの管理者に届けます。
まさに、入力されたデータを相手に届ける(POST)したい時に必要になるわけですね!

inputタグやselectタグ・textareaタグに必要な要素

formの各パーツを構成するものには、inputタグやselectタグ・textareaタグなどがあります。
inputタグやselectタグに必要な要素を確認していきます!

1つめは、name属性。
name属性は、各パーツに入力されたデータにラベリングをするようなモノです。
これがないと、プログラムやコンピューターは、フォームに入力されたデータが何のことを指しているのかを分別することができないのです。

名前のことを言っているデータなのに、名前とは認識してくれない・・・そんな感じになってしまうわけですね。

2つめはvalue属性。
入力した値そのものがvalue属性になる、ということです。

もともと入力されているデータを更新したりする場合は、value属性に値を仕込んで、表示したりします。

form_tagヘルパーについて

では、本題!
railsのform_tagヘルパーの書き方の実例を書いてみました!

今回掲載した実例は、とてもシンプルなものになっています。
内容をそぎ落としてみると、先ほどformタグに必要な要素として掲載したものが、ばっちりありますよね!

こうしてみると、言語の書き方が違えど、formタグに何が必要なのかをきちんと踏まえれば、覚えやすいものなんだなと思います!

form_forヘルパーについて

form_forヘルパーは、見た目だけでいうとform_tagヘルパーより簡略化してかける印象があります。
書き方の実例、載せてみました!

モデル名と書いてあるところは、要するにデータベースに入力されているデータになります。
該当のデータの大元さえformタグに該当するところにおいておけば、あとは勝手に必要なデータを出力してくれるようなので、name属性に該当するような部分だけ:nameのように書いておく形ですね。

送信先のURL指定は省略しても問題ないようなので、汎用性はform_forの方が高いかもしれません!

まとめ

この記事は随時更新していきたいと思います!