Railsのform_forの書き方を現役エンジニアが解説【初心者向け】
初心者向けにRailsのform_forの書き方について現役エンジニアが解説しています。form_forはRailsでフォームタグを生成する場合に使用します。モデルが無い場合はform_tagを使用します。Rails5.1からはform_widthも使えるようになっています。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Railsのform_forの書き方について解説します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。
今回は、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 %>
実際に書いてみよう
それでは実際に書いてみましょう。今回はて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がこのフォームの送信ボタンを作成しています。
以上で、解説を終わります。よく使うメソッドなので押さえておきましょう。
筆者プロフィール
メンター金成さん
フリーランスエンジニア。 使える言語は、ruby python go 。最近はgoにハマってます。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。