form_withメソッドについて

スポンサーリンク
form_withメソッドについてプログラミング

今回は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情報を削除する

コメント