今回はform_withメソッドについてお話していきます。
form_withメソッドについて
今回実装した機能の概要
チャットアプリ制作で以下の機能を実装した。
- ユーザーがグループを作ってチャットできる機能
- そのグループの名前やグループメンバーを編集できる機能
form_withメソッドのmodelが優秀な話
グループの新規登録のボタンも編集時の更新ボタンも全く同じフォームのコードを使用しているのにsubmitボタンを押した後のデータの送信先は両者で異なります。
なぜならデータの保存(新規登録)はcreateアクションで更新はupdateアクション。
なぜ同じコード使っているのに正常に動くのか。
それはmodelの後に続く引数の内容によってデータの送信先を推測しているから。
例)form_with model: @group という記述を行った場合
@groupの中が空のデータ→createアクションが実行される
@groupの中にデータある→updateアクションが実行される
なんて優秀なんだ、modelってやつは。
form_withのデフォルトのHTTPメソッド
デフォルトはPOST
<%= form_with(url: search_tweets_path, local: true, method: :post, class: "search-form") do |form| %>
form_withを使用する場合、HTTPメソッドを指定しないと「POST」になります。
上記の記述は指定してありますが、特に何も指定していない場合は気をつけましょう。
ここで簡単にHTTPメソッドの種類のおさらい。
HTTPメソッド | 役割 |
GET | 情報を取得する |
POST | 情報を投稿する |
PUT | 情報の全体を修正する |
PATCH | 情報を部分修正する |
DELETE | 情報を削除する |
コメント