U_OK_2023’s blog

主に日々のプログラミング学習についてのアウトプットと備忘録

【エラー】ActionView::MissingTemplate in Devise::Registrations#new【インスタンス化していなかった】

本日もオリジナルアプリを作成中にエラーが発生しました。

 

ActionView::MissingTemplate in Devise::Registrations#new

 

現状説明:

エラーハンドリングするために、viewに render を記述、
挙動確認のため新規登録をクリックしてエラー発生

 

 

①何が問題でどうしたい

エラーを解決して、新規登録画面にエラーが表示されるようにしたい

 

②現在(位置)

部分テンプレートを作成し、部分テンプレートを表示させたい場所に、
部分テンプレートを呼び出す記述をし、
新規投稿ページにて何も情報を入力せずに、 登録ボタンを押した。

 

③問題点

ActionView::MissingTemplate in Devise::Registrations#new

意味は、shared/_error_messagesが見つからないというエラー

 

④仮説

エラーの意味を調べ、見つからないと言われているものから調べる

正しいか確認する → そのために、正しいかどうかを調べる

 

1️⃣場所(存在するのか)

場所の確認(そもそも見つからないと言われているものは存在するのか)app/views/shared/_error_messages.html.erb → 存在する

 

2️⃣前提&置換((構文的に)正しく設定されているか)

前提の確認(記述の仕方は(構文的に)正しいか))
正しい構文で、値は正しく置き換わっているか
そのファイル名が適切に_で始まっているか、
そして拡張子が.html.erbになっているか → なっている

 

3️⃣内容((構文的に)正しく情報を受け取っているか)

内容の確認(構文的に)そこに記述されている内容は正しいか)

(構文的に)正しい設定・値に置き換えられているなら、
正しい情報を受け取っているのか

app/views/shared/_error_messages.html.erbファイル内に
書かれている内容は正しいか → 内容は正しい

 

4️⃣場所(存在するのか)

場所の確認(shared/_error_messages が使われる場所は存在するのか)

app/views/devise/registrations/new.html.erb → 使われる場所は存在する

 

5️⃣前提&置換((構文的に)正しく設定されているか)

前提の確認(記述の仕方は(構文的に)正しいか))
正しい構文で、値は正しく置き換わっているか

<%= render 'shared/error_messages', model: @user %>なっている

 

6️⃣内容((構文的に)正しく情報を受け取っているか)

内容の確認(構文的に)そこに記述されている内容は正しいか)
(構文的に)正しい設定・値に置き換えられているなら、
正しい情報を受け取っているのか → @user に関することをまだ調べていない

 

7️⃣場所(存在するのか)

場所の確認( @user が定義されている場所は存在するのか)

app/controllers/users_controller.rb → 存在する

 

8️⃣前提&置換((構文的に)正しく設定されているか)

前提の確認(記述の仕方は(構文的に)正しいか))
正しい構文で、値は正しく置き換わっているか

app/controllers/users_controller.rb に 以下の記述がないことがわかった

(構文的に)正しく設定されていないことがわかった

すなわち、@user インスタンス化されていなかった

  def new
    @user = User.new
  end

⑤試したこと

app/controllers/users_controller.rb に
@user が正しくインスタンス化されるように記述を追加した

  def new
    @user = User.new
  end

⑥結果

エラーは解決し、エラー画面が表示されるようになった

 

原因:

usersコントローラーに newアクションを定義せず、

インスタンス化もしていなかった

 

解決方法:

app/controllers/users_controller.rb に 新規登録時、

インスタンス変数を生成し、view に渡せるようにした

 def new
    @user = User.new 
  end

気付き:

エラー発生した場合

以下の手順でエラーの原因を探していく

1️⃣場所 ここどこ?
現在位置を把握する
エラーを調べ根幹を見つける

2️⃣前提 これで合ってる?
交通手段は正しいか
エラーの根幹は(構文的に)正しく設定されているか調べる

3️⃣置換 
乗車できたか
(構文的に)正しく設定されているなら、 正しく置き換えができているか調べる

2️⃣3️⃣はセットのイメージ

4️⃣内容 この方角で合ってる?
移動できているか
場所が正しく存在し、
正しく設定され、正しく置き換えられているなら、
正しく情報を受け取っているか調べる

解決しなければ

1️⃣から始める