Railsのform_with超入門!初心者でもわかるフォームと入力処理の基本
生徒
「Railsで文字を入力する画面って、どうやって作るんですか?」
先生
「Railsでは、form_withという仕組みを使うと、入力フォームを簡単に作れます。」
生徒
「フォームって、名前とかメールアドレスを入れるあれですよね?」
先生
「そうです。紙の申込書を画面にしたものだと考えると分かりやすいですよ。」
1. Railsとは?フォームが重要な理由
Rails(ルビーオンレイルズ)は、Webアプリケーションを作るための道具箱のような存在です。Webアプリとは、ブラウザで使うサービスのことで、検索画面や登録画面など、人が文字を入力する場面がたくさんあります。その入力を受け取る入口がフォームです。Railsでは、このフォーム作成を安全かつ簡単に行える仕組みが最初から用意されています。
2. form_withとは?初心者向けに超かんたん説明
form_withは、Railsでフォームを作るための命令です。難しく聞こえますが、「ここに名前を書いてください」と書かれた用紙を作る係だと思ってください。form_withを使うと、どこに送るフォームなのか、何を書くフォームなのかをRailsが自動で考えてくれます。
3. modelを指定するform_withの基本
modelとは、入力されたデータを入れる箱の設計図です。例えば「名前を書く箱」「年齢を書く箱」をまとめたものです。modelを指定すると、Railsが送信先や名前を自動で決めてくれます。
<%= form_with model: @user do |f| %>
<%= f.text_field :name %>
<%= f.submit "送信" %>
<% end %>
これは「ユーザーの名前を書くフォームを作る」という意味です。紙に名前を書いて提出するイメージと同じです。
4. URLを指定するform_withの書き方
modelがまだ無い場合や、送り先を自分で決めたいときはURLを指定します。これは「この住所に郵送してください」と書くのと同じです。
<%= form_with url: "/contacts" do |f| %>
<%= f.text_field :email %>
<%= f.submit "送信" %>
<% end %>
この場合、入力された内容は「/contacts」という場所に送られます。
5. scopeとは?名前をまとめる便利な仕組み
scopeは、入力されたデータに名前を付けて整理する仕組みです。買い物袋にラベルを貼るようなものです。
<%= form_with scope: :profile, url: "/profiles" do |f| %>
<%= f.text_field :age %>
<%= f.submit "送信" %>
<% end %>
こうすると、送られるデータは「profileの中のage」という形になります。後で取り出しやすくなります。
6. local: trueとは?通信方法の違いを理解しよう
local: trueは、「普通の手紙で送るか、特別な高速便で送るか」の違いです。初心者のうちはlocal: trueを付けて、普通の動きをさせるのがおすすめです。
<%= form_with model: @post, local: true do |f| %>
<%= f.text_field :title %>
<%= f.submit "送信" %>
<% end %>
これで、画面がきちんと切り替わる分かりやすいフォームになります。
7. フォームで送ったデータはどこへ行く?
フォームで送信されたデータは、コントローラという司令塔に届きます。コントローラは、受け取った紙をチェックして、必要なものだけを使います。そのときに使うのがStrong Parametersです。これは「必要な項目だけ受け取る安全ルール」です。
def user_params
params.require(:user).permit(:name)
end
これにより、余計な情報が勝手に入るのを防げます。
8. CSRFとは?フォームを守る鍵の仕組み
CSRFは、なりすまし送信を防ぐための鍵です。Railsのフォームには、自動で見えない合言葉が入っています。これがあることで、安全に入力を受け取れます。form_withを使っていれば、特別な設定をしなくても守られます。