2017-04-14 5 views
0

ich einen Blick habe, und in der Ansicht Ich rufe einen Teil:Mein Teil-Objekt ist nicht auf den inneren Teil besteht immer richtig

<%= render 'shared/users', locals: { users: @users } %>  

Meinen Teil sieht aus wie:

/shared/_users.html.erb 

<% @users.each do |user| %> 
    Outside the inner partial user works <%= user.inspect %> 
    <%= render 'shared/user_detail', locals: { user: user} %> 
<% end %> 

Mein Benutzerdetail sieht teilweise so aus:

/shared/_user_detail.html.erb 

    This is a user: <%= @user.inspect %> 

Es gibt gerade nur NIL für das Benutzerobjekt aus.

Warum wird mein Benutzerobjekt nicht in das partielle übergeben?

habe ich versucht, dies auch:

This is a user: <%= user.inspect %> 
+0

funktioniert es, wenn Sie die Syntax ändern? <% = render 'shared/users', users: @users%> und dann in den anderen partiellen <% = render 'shared/user_detail', user: user%> –

+0

Die @users, die an 'users' übergeben werden, funktionieren gut Ich gebe den user.inspect vor dem inneren Teil aus. – Blankman

Antwort

3

die locals: { users: @users } aus Ihrer Sicht Drop (wo Sie Ihren ersten Teil machen), @users wird in allen verschachtelten Ansichten verfügbar sein, so dass Ihr Code wird:

<%= render 'shared/users' %> 

In Ihrem users teilweise entfernen locals, aber halten die user Variable:

Schließlich

verwenden user Variable in Ihrem user_detail Teil:

# /shared/_user_detail.html.erb 

This is a user: <%= user.inspect %> 

, die jetzt funktionieren sollte.

+0

jetzt in meinem ersten Teil bekomme ich: '' 'undefined lokale Variable oder Methode' Benutzer' '' ' – Blankman

+0

Sie haben Recht,' @ Benutzer' wird für alle Teiltage (innerhalb Ihrer Hauptansicht) verfügbar sein. Ich habe den Code aktualisiert, damit er funktioniert. – Gerry

Verwandte Themen