Ruby on rails を学習中の方の参考にしてもらえたら嬉しいです。
アプリケーションを作成している時に出てくるエラーとその解決方法について掲載します。少しでも参考にしていただけると幸いです。
今回はController# show is missing a template for request formats: text/htmlというエラーの解決方法をお話しします。エラー画面は下記の画像のような状態です▼
先に結論を話します
この手のエラーは『missing a template for request formats:』とあるように、htmlのファイルが読み込まれないor無いために起こっているエラーです。なので、htmlファイルが存在するか?コントローラーが読み込まれるように記述されているかを確認していくことになります。
では早速エラーを探っていきます。
例によってChatGPTにどんなエラーなのか解説してもらいます▼
ということで、1番2番3番と、解決策が提案されています。
ファイルを確認します
まずはprofileのファイルにsがなかったのでsを足しておきました。
ちなみにこのファイルの中にはshowhtml.hamlファイルとedit.html.hamlファイルの2つが入っています▼
showファイルの中身をチェックします
画像を見るとコメントアウトしているのが分かると思います。
この記述の中には各ページに遷移するための=link to ~
というリンクが多数あって、画面遷移のコントローラーが整っていないリンクが存在します。
その為、一旦コメントアウトしてコントローラーが無いリンクを見つけて、それだけを一旦コメントアウトしておこうということにしました▼
画像のようにコメントアウトすると、ブラウザは下の画像のようにシンプルな画面が表示されていました。
上記の状態からルーティングやコントローラーに問題があるのではなく、html.haml内にエラーがあるということが分かりました。
エラー箇所が発見できました
ここから徐々にコメントインしていってエラーになる箇所の特定をしていきます。
画像が少しみづらいですが、今回のエラーの原因は%h2インフォメーション
というコードの下に続く箇所の=link to ~
の先のhtmlテンプレートが存在していないために、エラーを起こしていました。
正確には▼
.index_container
%h2 インフォメーション
profile_item
current_user.informations.each do information|
= link_to information_path(information) do
上記のコードの中の= link_to information_path(information) do
から遷移するためのコントローラーとhtmlファイルが無いためにエラーを起こしていました。
なので、エラー箇所を下記のようにコメントアウトしてあげると左ようにブラウザが表示されるようになりました。
まとめ
いかがでしたでしょうか?
今回は『missing a template for request formats:』というエラーを解決していきました。
このエラーから探ることはコントローラーが正しく記述されているか?htmlファイルは正しいか?ということを見ていき、最終的にはまだ、画面遷移する先のコントローラーがなかったことによるリクエストエラーでした。
一つ一つエラーを読み解けば必ず解決できます。
一緒に頑張って作っていきましょう。
他にも記事を発信していきますので、私の QiitaやTwitterをフォローしていただけると嬉しいです。
個別の質問もぜひ歓迎します。
私自身、初学者ではありますが、1歩先を行くものとして回答できたらと思います。
それでは。