Jbuilder部分与路径

ste*_*ris 7 ruby ruby-on-rails jbuilder partials

我试图使用下面的代码渲染部分jbuilder文件

json.(@request, :id)

json.profile do
    json.partial! partial: 'users/user_reduced', user: @request.user
end
Run Code Online (Sandbox Code Playgroud)

部分在下面(users/_user_reduced.json.jbuilder)

json.(user, :id, :name, :sex)
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

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

就像没有设置本地用户变量一样.将局部变量设置为jbuilder部分路径的语法是什么?

ste*_*ris 9

我试图解决这个问题几个小时,最后发现上面的语法(在jbuilder自述文件中列出的思想)不起作用.您必须格式化您的部分,如下所示:

json.partial! 'partials/partial_path', locals: {local_var: my_local_var}
Run Code Online (Sandbox Code Playgroud)

所以在我的情况下,它将是:

json.(@request, :id)

json.profile do
    json.partial! partial: 'users/user_reduced', locals: {user: @request.user}
end
Run Code Online (Sandbox Code Playgroud)

  • 有一个快捷方式:`json.profile do json.partial!'users/user_reduced',用户:@request.user' (2认同)
  • 没有必要包括partial:或locals: (2认同)