我有一个类似的文件夹结构
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 和 Rails 能够找到部分。在这种情况下,错误消息几乎没有用,因为看起来你做得对。另外,我根本找不到任何关于您应该传递给渲染部分的选项哈希的文档。我的 Github Copilot 刚刚为我自动完成了它,然后我在互联网上搜索试图找到与其相关的信息,但找不到。
我假设您只是查看错误消息
{:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}
然后意识到选项是区域设置、格式、变体、处理程序?
在这里找到答案Rails 7 缺失部分
以上面的答案为基础。如果要换的话
窗口.当前用户 =
与
<%= render partial: "api/users/user", formats: [:json], handlers: [:jbuilder], locals: { user: current_user } %>
你仍然会遇到一个非常烦人的错误,因为后者不是
.html_安全!
html safe 不受欢迎,据了解应该用 sanitize 代替以获得与原始代码相同的结果。
窗口.当前用户 =