Railsのエラー『ActionView::MissingTemplate: Missing partial』の解決方法

このエラーは、Railsが指定されたパーシャルを見つけられない場合に発生する。主にファイルの場所や命名の問題、レンダリング時のパス指定の誤りが原因となる。この記事では、エラーの発生条件とその解決方法を詳しく解説する。
目次
エラーの発生条件
以下のような状況でこのエラーが発生する可能性がある。
- 指定したパーシャルのファイルが存在しない
- パーシャルのファイル名が正しくない(「_」が抜けているなど)
- レンダリング時のパス指定が誤っている
- ファイルの拡張子が異なっている
- 正しいビューのフォルダに配置されていない
エラーメッセージの例
エラーメッセージの例:
ActionView::MissingTemplate: Missing partial users/profile with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :haml, :slim]}.
パーシャルの命名規則を確認する
Railsのパーシャルは、ファイル名の先頭に「_」を付ける必要がある。
# 正しい例
app/views/users/_profile.html.erb
# 誤った例(「_」が抜けている)
app/views/users/profile.html.erb
レンダリング時の指定を確認する
パーシャルをレンダリングする際は、ファイル名を適切に指定する必要がある。
# 正しい例
render partial: "users/profile"
# 誤った例
render partial: "profile" # コントローラと異なるディレクトリの場合はフルパス指定が必要
パーシャルの拡張子を確認する
指定されたフォーマット(例:HTML, JSON, XMLなど)に対応したテンプレートが存在するか確認する。
# 例:HTMLフォーマット用のパーシャル
app/views/users/_profile.html.erb
# 例:JSONフォーマット用のパーシャル
app/views/users/_profile.json.jbuilder
パーシャルが正しいディレクトリにあるか確認する
パーシャルは、通常そのパーシャルを使うビューのフォルダに配置される。異なる場所にある場合は、パスを明示する必要がある。
# 正しい例(usersフォルダ内のパーシャルを指定)
render partial: "users/profile"
# 別のフォルダにある場合(例:sharedフォルダ)
render partial: "shared/profile"
パーシャルがプリコンパイルされているか確認する
Railsのアセットパイプラインを使用している場合、特定の環境(例:本番環境)ではプリコンパイルが必要になることがある。
rake assets:precompile
キャッシュをクリアしてみる
テンプレートのキャッシュが原因で正しく読み込まれないことがある。キャッシュをクリアして問題が解決するか試す。
rake tmp:cache:clear
サーバーを再起動する
変更が適用されない場合は、Railsサーバーを再起動してみる。
bin/rails server
まとめ
- パーシャルの命名規則(先頭に「_」を付ける)を確認する
- レンダリング時の指定を適切にする
- ファイルの拡張子が正しいかチェックする
- パーシャルの配置場所を見直す
- アセットのプリコンパイルやキャッシュクリアを試す
- サーバーを再起動する
-
前の記事
PHPのエラー『Warning: DateTime::modify(): Failed to Parse Time String』の解決方法 2025.04.18
-
次の記事
Module build failed: Error: ENOENT: no such file or directoryの解決方法 2025.04.18
コメントを書く