🟡

ActionController::RoutingError (No route matches [GET] "/dist/img/~

2023/10/03に公開

今回クリアに時間がかかったエラーについて

Started GET "/dist/img/AdminLTELogo.png" for ::1 at 2023-10-03 20:52:46 +0900

ActionController::RoutingError (No route matches [GET] "/dist/img/XXX.png"):

上記のエラーが現れました。

結論

  • 画像を保存するディレクトリが間違っていた。

解説

  • エラーをChatGPTに投げてみました。

  • このエラーメッセージは、Railsアプリケーションが指定されたURLに対するルート(ルーティング情報)を見つけられないことを示しています。
  • 具体的には、GETリクエストが "/dist/img/XXX.png" というURLに送信されたが、そのURLに対するルーティングが設定されていないため、アプリケーションが対応するコントローラーアクションを見つけることができない、というエラーです。

私の場合

  • アセットの配置場所が正しくない
    : "/dist/img/XXX.png" ファイルが正しいディレクトリに存在しないため、アセットへのアクセスができませんでした。

/dist/はどこ?

保存するディレクトリが違うことはわかりました。
しかし、/dist/というディレクトリが見つかりませんでした。


  • ChatGPTに聞いてみました。

  • 一般的なディレクトリ構造の例を以下に示しますが、具体的なアプリケーションによって異なる場所に配置されている可能性があります。

  • app/assets/imagesディレクトリ
    : 一般的なRailsアプリケーションの場合、アセットファイル(画像、スタイルシート、JavaScriptなど)は "app/assets" ディレクトリ内に配置されます。したがって、"/app/assets/images" ディレクトリに "XXX.png" ファイルが存在するか確認してください。

  • vendor/assets/imagesディレクトリ
    : サードパーティのテーマやライブラリは通常、"vendor/assets" ディレクトリ内に配置されます。したがって、"/vendor/assets/images" ディレクトリに "XXX.png" ファイルが存在するか確認してください。

  • publicディレクトリ
    : 一部のアプリケーションでは、静的なファイル(アセット)は "public" ディレクトリ内に配置されます。したがって、"/public/dist/img/XXX.png" にファイルが存在するか確認してください。


私の場合は、3つ目のpublicディレクトリに/dist/img/ディレクトリを作成することで解決できました。

お疲れ様でした。

Discussion