Jbuilder Partial With Path

12

我正在尝试使用以下代码渲染一个 Jbuilder 部分文件:

json.(@request, :id)

json.profile do
    json.partial! partial: 'users/user_reduced', user: @request.user
end

以下是部分内容(位于users/_user_reduced.json.jbuilder文件中)

json.(user, :id, :name, :sex)

然而,我遇到了这个错误:

ActionView::Template::Error (undefined local variable or method `user' for #<#<Class:0x007fe4ebc91878>:0x007fe4ebe599f8>):

就好像本地用户变量没有被设置一样。如何使用语法将本地变量设为jbuilder部分路径?

1个回答

16

我已经花了数小时来尝试修复这个问题,最终发现上面的语法(虽然在jbuilder自述文件中列出)不起作用。你必须像以下代码一样格式化你的partials:

json.partial! 'partials/partial_path', locals: {local_var: my_local_var}

所以在我的情况下,应该是这样的:

json.(@request, :id)

json.profile do
    json.partial! partial: 'users/user_reduced', locals: {user: @request.user}
end

2
有一个快捷方式:`json.profile do json.partial! 'users/user_reduced', user: @request.user' - Wylliam Judd
2
不需要包含 partial: 或 locals:。 - Wylliam Judd
1
但是,如果您需要传递更多变量,则此快捷方式无法工作。例如: json.partial! partial: 'users/user_reduced',locals: { user: @request.user, other: 'value' } - Thiago Silva Ferreira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接