progateのRuby on Railsをローカル環境で学習中に表題のエラーが発生したためメモとしてまとめます。
ログアウト、いいね機能を実装した際に
ActionView::Template::Error: The asset "application.js" is not present in the asset pipeline
とjavascriptのファイルが存在しないとエラーが出ました。
調べると原因はrailsのバージョンの違いによるものでした。
rails5.xではJavascriptのフォルダは
app/assets/javascripts/application.js
とある一方、rails6.0では
app/javascripts/application.js
と場所が異なります。
rails5.xでのビューファイルhead内は
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
となっているため以下のように変更し、正常にapplication.jsが読み込まれるようにし解決しました。なお全てのビューファイルで反映してほしいため、app/views/layouts/application.html.erbに変更を加えています。
<head>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
上でも少し触れましたが、progateで使用されているrailsバージョン「5.x」を指定してプロジェクトを作成する必要があったのですが、何も分からずrails new [プロジェクト名]
で始めてしまい、バージョンは最新の「6.0.1」となっていました。
学習の中でProgateに記載されているコードをそのままエディタに貼り付けた際、application.html.erbのheadタグ内も誤って書き換えたのが原因です。
書籍等で学習する際は以下の記事を参考にアプリ作成を始めようと思います。
Rails開発環境の構築(複数バージョン共存可能)(Homebrew編)