2015-04-15 21 views
6

jestem próby renderować częściowego pliku JBUILDER używając poniżejJBuilder Częściowa ze ścieżką

json.(@request, :id) 

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

częściowa jest poniżej (użytkownicy/_user_reduced.json.jbuilder)

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

Jednak uzyskać błąd:

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

To tak, jakby lokalna zmienna użytkownika nie była ustawiona. Jaka jest składnia ustawienia zmiennej lokalnej na ścieżkę częściową jBurnera?

Odpowiedz

7

Próbowałem rozwiązać ten problem przez wiele godzin i odkryłem, że składnia (myśl wymieniona w pliku readme jbuilder) powyżej nie działa. Musisz sformatować partials jak poniżej:

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

Więc w moim przypadku byłoby to:

json.(@request, :id) 

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

Jest to skrót: 'json.profile zrobić json.partial! "users/user_reduced", user: @ request.user ' –

+2

Nie jest konieczne uwzględnianie części: lub locals: –

+0

, ale jeśli potrzebujesz przekazać więcej zmiennych, ten skrót nie działa. Przykład: 'json.partial! partial: "users/user_reduced", locals: {user: @ request.user, inny: 'value'} ' –