Rails partielle Lokale bleiben nicht bestehen, wenn sie als eigene Lokale an einen anderen Teil gesendet werden
-
11-09-2019 - |
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.
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