Techioz Blog

レールが部分的に見つかりません

概要

次のようなフォルダー構造があります

project/app/views/api/users/_user.json.jbuilder

エラーは

Searched in:
  * "/Users/name/Desktop/etc/etc/project/app/views"

ActionView::MissingTemplate - Missing partial api/users/_user.json.jbuilder with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}.

レンダリングしようとしています

  <script type="text/javascript">
    window.currentUser = <%= render("api/users/user.json.jbuilder",
        user: current_user).html_safe %>
  </script>

まったく同じコードが Rails 5.xx では機能しましたが、現在は Rails 7.xx を使用しているため、このエラーで行き詰まっています。

解決策

Rails 7 では、ファイルに拡張子を含めるとエラーが発生します。

<%= render partial: "api/users/user", 
    formats: [:json], 
    handlers: [:jbuilder],
    locals: { user: current_user } %>

Works and Rails は部分的なものを見つけることができます。この場合、エラー メッセージはまったく役に立ちません。正しく実行しているように見えるだけです。また、部分レンダリングに渡す必要があるオプション ハッシュに関するドキュメントがまったく見つかりません。 Github Copilot が自動的にそれを補完してくれたので、それに関する情報を見つけようとしてインターネットを探しましたが、見つかりませんでした。

エラーメッセージを見るだけだと思います

{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}

次に、オプションがロケール、フォーマット、バリアント、ハンドラーであることに気づきましたか?

ここで答えが見つかりました Rails 7 の一部が欠落しています