16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

form_withでのmodelとurlの指定の違いは?

Last updated at Posted at 2021-04-25

はじめに

form_withを使用中に気になったので調べてまとめてみました。

目次

  1. urlの指定
  2. modelの指定
  3. modelとurlの指定の違い
  4. まとめ
  5. 参考

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)


16
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?