Header
2017-12-23
2020-05-23

Template is missingの対応方法|Ruby on Railsでよく発生するエラー1

2107

Ruby on Railsの独学をしている初心者の方がよく見るエラーのメッセージと対応方法を記載します。

Template is missing Missing template とは

controllerで設定しているアクションの、

viewが設定されていない場合に発生するエラーです。

Ruby on Railsはcontrollerのアクション名とviewのページ名が同名称になる事が基本で、controllerのアクションとviewのページ名に差異がある場合はcontrollerで明示的に記載する必要があります。

例えばBlogsのcontrollerがあり、new.html.erbが設定されていない状態で

class BlogsController < ApplicationController

 #アクションが設定済みだがページは設定していない
  de new
   @Bloge = Blog.new
  end

end

以下へアクセスしようとした場合

http://localhost:3000/blogs/new 

ページを設定していない場合は下記のようなエラーが発生します。

Missing template blogs/new, application/new with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}

初心者の場合は中々気づけないエラーですが、controllerのアクション名とviewのページ名が同名称になる事を押さえれば回避することができるようになります。

なおRuby on Rails5では以下のメッセージが表示されます

ActionController::UnknownFormat in 名前Controller#アクション

例えば ArticlesControllerでindexアクションに対応するviewファイルが存在しない場合は以下のエラーが発生します。

ActionController::UnknownFormat in ArticlesController#index
ArticlesController#index is missing a template for this request format and variant. request.formats: ["text/html"] request.

この場合もArticlesのindex.html.erbを作成すれば可動します。

NoMethodError というエラー

メソッドがないというエラー 注意点として、表示されているメソッドがエラーではなく そもそも前段のインスタンス変数が未設定だったら値がnilの場合があったりする。

例 article_controller

def show
  @article = Article.find(params[:id])
end

show.html.slim

  div==@article.publish_time.strftime('%Y-%m-%d')
  h1  = @articles.title #23行目

エラーの内容

NoMethodError in Articles#show
articles/show.html.slim where line #23 raised:
 undefined method `title' for nil:NilClass

このエラーの内容はshow.html.slim の23行目のtitleがないというエラー。 注目するべきはtitleではなくインスタンス変数の@articlesです。

よく見るとcontrollerのインスタンス変数は@articleと単数形になっているので、@articlesの変数の値は何も設定されていないためtitleがnilになりエラーになる。

その為 show.html.slim の@articles.titleを@article.titleへ変更すればエラーが解消されます

その他関連記事

未経験からエンジニアになった人間が解説|独学プログラミングで挫折しないよう心がける事

独学プログラミングの勉強手順|未経験からエンジニアになった人間が解説

未経験からエンジニアになった人間が考える、今からエンジニアに就職する方法

【初心者・独学者向け】プログラミングに困ったらテラテイルで質問してみよう

フリーランスエンジニアで稼ぎ続けるために必要な3つの力

ちゃんと知ってる? フリーランスエンジニアと契約・報酬形態について

Ruby on Rails Python等各プログラミング言語のエラーと対応方法一覧

Ruby on Railsのデバッグツール byebugの紹介

Bootstrapでテーブル表記を行う|コピペで動くサンプル付き

初心者向け|Linuxコマンドを使い始めた人が覚えたほうが良いコマンド

あなたにお勧めの記事
次の記事