falconao
@falconao (Tomoki Ichikawa)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

railsエラー 「TopController#index is missing a template for request formats: text/html」

解決したいこと

以下のようにして、サーバーを立ち上げると
「TopController#index is missing a template for request formats: text/html」
とエラーが出てきてしまいます。
この解決方法をどなたかご教授いただけないでしょうか

config>routers.rb
Rails.application.routes.draw do
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
  get "/", to: "top#index"
end
app>controllers>top_controller.rb
class TopController < ActionController::Base
    def index
    end
end
app>views>layouts/top>index.html.erb
<h1>Hello</h1>

この内容でサーバーを立ち上げると
スクリーンショット 2021-06-21 15.54.36.png
と出てきてしまいます。

試したこと

検索して調べましたが、それでもどこが間違っているかわからず…
翻訳してみると「TopController#indexにリクエスト形式のテンプレートがありません:text / html」

htmlのファイル名や場所がおかしいのではないかと思い、見てみましたが
「views」フォルダの中に「top」フォルダを作成し、その中に「index.html.erb」というファイルを作っています。

自分はvscodeを使っていまして
スクリーンショット 2021-06-21 16.07.17.png

views/layoutsとなっているのが気になりますが、
どのように変更すればいいかわかりません。
初歩的な質問で申し訳ございません。

0

1Answer

「views」フォルダの中に「top」フォルダを作成し、その中に「index.html.erb」というファイルを作っています。

スクリーンショットを見ると、おっしゃっている場所に作成できておらず、実際は次のディレクトリ構成になっています。
views/layouts/top/index.html.erb

windowsならエクスプローラーで表示してみると分かりやすいと思います。

正しくviewsフォルダの中に作成することで解決するのではないでしょうか?
views/top/index.html.erb

1Like

Comments

  1. @falconao

    Questioner

    ご回答ありがとうございます
    その点も考えたのですが、デフォルトで「views>layouts」というのがありまして、
    viewsの中に新しいフォルダを作ろうとしても、自動的にlayoutsの下に作られるようになってしまいます。

    そこで、vscode内でフォルダを操作するのではなく、Finderでフォルダを移動させるとviewsの中にtopフォルダをつくることができ、問題は解決できました。
    ご回答ありがとうございました!
  2. viewsが選択された状態になっていれば正しく作成されると思いますよ。
    誤って作成してもドラッグ&ドロップで移動もできます。

    ともかく解決されたようで良かったです。

Your answer might help someone💌