Railsにおける「フォームの作成(form_with)」は、ユーザーからの入力を受け取るためのHTMLフォームを生成するためのメソッドです。Railsでは、フォームの構築において form_with ヘルパーを使うことで、シンプルかつ安全にモデルと連携したフォームや非モデルフォームを生成することができます。
1. form_withの基本構文
form_withの基本構文-
model: @user:Userモデルのインスタンスと連携したフォームを生成。 -
local: true:フォームをJavaScript非依存の通常のHTMLフォームとして送信(デフォルトは非同期)。 -
do |form|:フォームビルダーオブジェクトが渡され、フィールド作成に使用。
2. モデルと連携したフォーム
form_with はモデルと連携させることで、自動的に以下を処理します。
-
@userが新規レコードの場合 →POST /usersに送信 -
@userが既存レコードの場合 →PATCH /users/:idに送信
この仕組みはRESTfulな設計に則っています。
3. 非モデルフォーム(手動でURLを指定)
モデルに依存しないフォームを作成する場合は以下のようにします。
4. よく使うフィールドメソッド
| メソッド | 説明 |
|---|---|
text_field |
一行のテキスト入力欄 |
text_area |
複数行のテキスト入力欄 |
password_field |
パスワード入力欄(非表示入力) |
email_field |
メールアドレス入力欄(HTML5対応) |
check_box |
チェックボックス |
radio_button |
ラジオボタン |
select |
セレクトボックス |
submit |
フォーム送信ボタン |
5. バリデーションエラーの表示
バリデーションでエラーがある場合、ビューで以下のように表示できます。
6. セキュリティ対応(CSRFトークン)
form_with は自動的にCSRF対策用のトークン(authenticity_token)をフォームに埋め込み、悪意あるリクエストからアプリケーションを保護します。
まとめ
-
form_with はビューでのフォーム作成を簡潔にするRailsのヘルパー。
-
モデルと連携すればRESTfulなルーティングに自動対応。
-
非同期送信(remote: true)もサポート。
-
form_withを用いることで、安全かつ保守性の高いフォームを効率的に構築可能。
ChatGPT4o 生成日:2025/06/21