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