今回は、個人的に解決するのに時間がかかったエラーだったのでメモに残そうと思います。
もし、同じエラーで悩まれている方がいれば参考になれば嬉しいです!
まだ、初学者なので間違っているところがあればご指摘ください。
エラーが発生した流れ
やりたいこと:ログイン機能を実装したい。
user_sessionsコントローラーを作り、それに対応するnew.html.erb
のviewも作成。
ログイン画面をブラウザ表示しようとしたところ以下のエラーが発生。
ActionController::UnknownFormat
今回、発生したエラー文です。
ActionController::UnknownFormat (UserSessionsController#new is missing a template for this request format and variant.
request.formats: [“text/html”]
request.variant: []
NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you’re loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we’re showing an error to be extra-clear. If you expect 204 No Content, carry on. That’s what you’ll get from an XHR or API request. Give it a shot.):
エラーの原因
調べてみたところ、次の一文がヒントになるようです。
UserSessionsController#new is missing a template for this request format and variant.
リクエストされたフォーマットに対して、テンプレートがないよという意味みたいです。
つまり、今回で言うと、UserSessionsController#new
に対応するviewがないため発生したエラーのようです。
解決法
今回のエラーはリクエストされたフォーマットに対してのviewがないことが原因でした。
ですが、UserSessionsController#new
に対応するviewである、new.html .erb
は存在していますし、user_sessions配下に配置もしています。
なぜエラーが解消されないのか?
もう一度view名を確認してみました。
new.html .erb
よくよくみると、htmlの後に半角スペースが空いていることに気づきました。
new.html.erb
半角スペースを消して、リロードすると、無事ログイン画面が表示されました!
まとめ
小さな半角スペースがあるだけでも、エラーが発生してしまうことを今回身をもって知ることができました。
また、同じエラーが起きた場合は、焦らず細かい部分もしっかりみていこうと思います。
最後まで、読んでいただきありがとうございます。