LoginSignup
15
12

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

例)
<%= f.text_field :emai%>
<%= f.submit %>

urlでは指定したurlに対してPOSTメソッドを行う。

:scope
scope指定すると「指定すると現在のURLに対応したメソッドにフォームを送信」してくれる
つまり、loinフォームを作成していてsessionControllerを使っている場合はsessionControllerのnewメソッドに送信してくれることになる

ストロングパラメーターの設定
params.permit(:email)
urlの場合は構造階層を意識することなくストロングパラメーターを設定できる。

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]という構造階層での指定が必要になる。

modelとurlの指定の違い

  • modelは中身が入っていると自動でeditメソッドを呼び出す
  • ストロングパラメーターの指定方法が違う

まとめ

個人的両方の使いどころ

  • ログインフォームはurl指定

  • 登録フォームはmodel指定

参考

15
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
15
12