Rails partielle Lokale bleiben nicht bestehen, wenn sie als eigene Lokale an einen anderen Teil gesendet werden

StackOverflow https://stackoverflow.com/questions/1240321

Frage

Ich rendere einen Teil so:

<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %>

Also drinnen _some_partial.html.erb Ich rendere zwei weitere Teiltöne wie folgt:

<% #foo.nil? #=> false %>
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %>
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>`

Die lokale Variable foo wird in einwandfrei dargestellt some_partial.html.erb und sogar in another_partial_again.html.erb.Allerdings ist die foo-Variable in nicht zugänglich another_partial.html.erb obwohl ich es explizit im Render-Aufruf übergeben habe.

Was passiert hier?

Danke für die Hilfe.

War es hilfreich?

Lösung 2

Gelöst. Stellt sich heraus, ich wurde auch von der Steuerung ohne die richtigen lokalen Variablen Senden der gleichen Teil Rendering. Dank sowieso !!!

Andere Tipps

Ich hatte das undefined local variable or method Beim Rendern eines Teils ist bei mir auch ein Fehler aufgetreten :locals definiert.

Allerdings hatte ich ein anderes Problem, das mein Problem verursachte, also dachte ich, ich würde meine Lösung teilen, falls sie jemand anderem hilft.(Diese Seite war schließlich das erste Ergebnis, als ich diesen Fehler gegoogelt habe)

Stellen Sie grundsätzlich sicher, dass Sie es verwenden :partial => 'path/to/partial' in deinem Aufruf an render.

D.h.

<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %>

NICHT so, wie ich es getan habe:

<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %>

Für einen Rails/Ruby-Neuling wie mich ist es leicht zu übersehen.

Bumped in diese sehr alte Frage, weil ich das gleiche Problem konfrontiert. Es stellte sich heraus, dass mit Rails 4+, wenn Sie nicht Sammlungen verwenden oder Layout der richtige Weg ist:

# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>

Wie dokumentiert

scroll top