0
0

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 1 year has passed since last update.

Ruby on Rails form-forの記述をform-withへ変更した時、model: @○○を記述するがこのインスタンス変数はどこからやってきたの?

Posted at

はじめに

Ruby on Railsでdeviseのgemを導入した際にはコントローラは生成されない。となった時にどこで何を見たらいいの?と思い、分からなかったので、メンターさんに質問して理解した内容をここに記録する。

(自分にしかわからない書き方となっていること、ご了承ください:bow:)

form-forの記述をform-withへ変更した時、model: @○○を記述するがこのインスタンス変数はどこからやってきたの?

form-forの記述

<%= <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> %>

form_withの記述

<%= <%= form_with model: @user, url: user_registration_path do |f| %> %>

疑問点。。。

model: @userと記述したので、インスタンス変数@userはどこかで定義されてるはずだが、どこをみたらいいのだろう?deviseのgemを導入した場合はコントローラは生成されてないし。。

やってみよう!

とりあえずmodel: @usermodel: userにしてみた!

結果。。。

image.png

もちろんエラー発生。。。
おそらくdeviseのgemを導入したらdeviseで作成したモデルをインスタンス変数で持ってこれるのだと思われるが、モヤモヤするので念のためメンターさんに質問した。

メンターさんの回答

上記の認識で基本的には合っています。
Gemファイルで導入した場合、裏で必要な機能をすでに実装してくれているので、そのまま持ってこれるようになります。

とのことです!

終わりに

どこでインスタンス変数を定義しているのか分かったら追記させていただきます!
まだまだ理解できていないことが多いので少しずつでも解消していきたいと思います!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?