Rails 无法找到部分

问题描述 投票:0回答:2

我有一个类似的文件夹结构

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 上,并且陷入了这个错误。

javascript json ruby-on-rails ruby jbuilder
2个回答
2
投票

在 Rails 7 中,在文件中包含扩展名会导致错误。

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

Works 和 Rails 能够找到部分。在这种情况下,错误消息几乎没有用,因为看起来你做得对。另外,我根本找不到任何关于您应该传递给渲染部分的选项哈希的文档。我的 Github Copilot 刚刚为我自动完成了它,然后我在互联网上搜索试图找到与其相关的信息,但找不到。

我假设您只是查看错误消息

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

然后意识到选项是区域设置、格式、变体、处理程序?

在这里找到答案Rails 7 缺失部分


0
投票

以上面的答案为基础。如果要换的话

窗口.当前用户 =

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

你仍然会遇到一个非常烦人的错误,因为后者不是

.html_安全!

html safe 不受欢迎,据了解应该用 sanitize 代替以获得与原始代码相同的结果。

窗口.当前用户 =
© www.soinside.com 2019 - 2024. All rights reserved.