はじめに
form_withを使用中に気になったので調べてまとめてみました。
目次
urlの指定
urlの書き方
form_with url: url_path
例)
emai%>
<%= f.submit %> ```
urlでは指定したurlに対してPOSTメソッドを行う。
**:scope**
```scope```指定すると**「指定すると現在のURLに対応したメソッドにフォームを送信」**してくれる
つまり、loinフォームを作成していて```sessionController```を使っている場合は```sessionController```のnewメソッドに送信してくれることになる
**ストロングパラメーターの設定**
```params.permit(:email)```
urlの場合は構造階層を意識することなくストロングパラメーターを設定できる。
<a id="#Chapter2"></a>
# modeleの指定
**modelの書き方**
```form_with model: @model```
**新しく作られたオブジェクトの場合**
例) ```user = User.new```
**controller間の処理の流れ**
new => create
この場合は渡されたオブジェクトの値が空の場合Rallsが自動でcreateメソッドを呼び出してくれる。
**ストロングパラメーターの値指定**
urlを指定して値を渡した場合は直接値を指定しできたが
moelの場合は構造階層になるので指定方法が変わる
「Userモデルのemailを指定する」といった形に切り替える
```params.requitre(:user).permit(:email)``` となり、params```[:user][:email]```という構造階層での指定が必要になる。
<a id="#Chapter3"></a>
# modelとurlの指定の違い
- modelは中身が入っていると自動でeditメソッドを呼び出す
- ストロングパラメーターの指定方法が違う
<a id="#Chapter4"></a>
# まとめ
**個人的両方の使いどころ**
- ログインフォームはurl指定
- 登録フォームはmodel指定
<a id="#reference"></a>
# 参考
- [【Rails】form_with/form_forについて【入門】](https://qiita.com/snskOgata/items/44d32a06045e6a52d11c)