Railsのform_forの書き方を現役エンジニアが解説【初心者向け】

初心者向けにRailsのform_forの書き方について現役エンジニアが解説しています。form_forはRailsでフォームタグを生成する場合に使用します。モデルが無い場合はform_tagを使用します。Rails5.1からはform_widthも使えるようになっています。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Railsのform_forの書き方について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Railsのform_forの書き方について詳しく説明していくね!

大石ゆかり

お願いします!

 

Railsのform_forとは

form_forとは、Railでフォームタグを簡単に作成するためのメソッドです。

使い方をマスターすれば、コーディングがずっと楽になります。Railsでアプリケーションを作成する際に、ほぼ必須のヘルパーなので、ぜひマスターしてください。

似たヘルパーとして、form_tagがあります。こちらもフォームタグを作成するメソッドですが、モデルに基づくformには、form_forをモデルに基づかないformには、form_tagを使用することが多いです。

例えば、ユーザーの登録や情報の更新機能にはform_forを、検索機能にはform_tagを使用する、などといったように使い分けます。

Railsのform_forの書き方

form_forは以下のように書きます。

<%= form_for(モデル,[オプション]) do |f| %>
    フォームの中身
<% end %>

モデルの部分には、@userや@postなどモデルオブジェクトを入れます。オプションでは、送信先のurlやタグの設定(クラスをつけたり、MIMEタイプを指定したり)をします。

Railsでは、自動で送信先の振り分けが行われるので、基本的にurlオプションは操作しなくてよいです。画像を送信したい場合やformタグにクラスをつけたい場合は、以下のように書きましょう。

<%= form_for(@user,:html => {:class => "field", :multipart => true}) do |f|%>
<% end %>

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは実際に書いてみましょう。今回はてtext_feildを使用して、簡単なフォームを作成します。Postモデルがstring型でcontentというカラムをもっているとして、フォームを書いてみましょう。

<%= form_for (@post, :html => { :class => "field"}) do |f| %>
  <%= f.label :content %>
  <%= f.text_field :content %>
  <%= f.submit "送信する" %>
<% end %>

f.とすることで、ポストモデルとlabelやテキストボックス(text_field)を紐づけることができます。f.labelは、contentのラベルタグを生成しf.text_fieldは、contentのテキストボックスを生成します。f.submitがこのフォームの送信ボタンを作成しています。

以上で、解説を終わります。よく使うメソッドなので押さえておきましょう。

 

筆者プロフィール

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。