0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails6】hamlを導入したらmissing a templateエラーが発生したときの対処法【超簡単】

Posted at

hamlのメリット

  • 閉じタグや<% end %>が必要なくなり、簡潔にかける。
  • インデントがきちっとしていないとエラーになるので嫌でも綺麗にかける。

上記のメリットに加えて、現場でも使われる機会が多いので、勉強がてらRailsにhamlを導入してみました。
そのときmissing a templateというエラーが発生し少し困ったのでここへメモとして残しておきます。
このページを見ているということは既にhamlを導入済身の方が多いと思うので一番下の解決方法へ飛んでください。
そうでない方のためにも、hamlの導入方法についても解説します。

(環境)

  • windows10 Pro
  • Rails: 6.0.3.2
  • ruby: 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
  • Docker for windows
  • MySQL 5.6
  • nginx:1.15.8

##hamlの導入方法

###1.Gemを追記

Gemfile
gem 'haml-rails'

###2.いつものやつ

$ docker-compose exec サービス名 bundle

開発環境にDockerを使っているのでdocker-compose exec サービス名 を付けてます。
これでhamlの導入は完了です。

##erbファイルをhamlに変換

$ docker-compose exec サービス名 rails haml:erb2haml

たったこれだけでerbファイルをhamlへ変換してくれます。

##missing a templateエラーが発生

ActionController::UnknownFormat (PostsController#index 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.)

localhostにアクセスしたら上記のようなエラーが出てviewが表示されなくなりました。

##解決方法
解決方法はサーバーを再起動するだけ。(rails s)
僕の場合は開発環境にdockerを使っていたのでコンテナを再起動しました。

$ docker-compose restart

これで解決すると思います。
視野が狭くなると再起動するという発想すらでなくなり迷宮入りしかけました。
エラーが起きた時は視野を広く持てるように気を付けたいです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?