2015-04-15 13 views
6

Ich versuche, eine partielle jbuilder Datei mit dem untenJbuilder Teil Mit Pfad

json.(@request, :id) 

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

die teilweise unter machen (Benutzer/_user_reduced.json.jbuilder)

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

Allerdings bekomme ich der Fehler:

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

Es ist, als ob die lokale Benutzervariable nicht festgelegt wird. Wie lautet die Syntax zum Festlegen einer lokalen Variablen für einen Jbuilder-Teilpfad?

Antwort

7

Ich habe versucht, dies für Stunden zu beheben, und fand schließlich, dass die Syntax (Gedanke auf der Jbuilder Readme aufgeführt) oben nicht funktioniert. Sie müssen Ihre partials wie unten formatieren:

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

Also in meinem Fall wäre es:

json.(@request, :id) 

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

Es gibt eine Abkürzung 'json.profile tun json.partial! 'users/user_reduced', user: @ request.user ' –

+2

Es ist nicht notwendig, partielle: oder Locals: –

+0

einzuschließen, aber wenn Sie mehr Variablen übergeben müssen, funktioniert diese Abkürzung nicht. Beispiel: 'json.partial! partiell: 'users/user_reduced', Locals: {user: @ request.user, andere: 'value'} ' –