Rails locaux partiels non persistants lorsqu'ils sont envoyés à une autre partie comme son propre locale
-
11-09-2019 - |
Question
Je rends une partie comme ceci:
<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %>
intérieur de _some_partial.html.erb
je rends deux partials comme ceci:
<% #foo.nil? #=> false %>
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %>
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>`
La foo variable locale rend bien dans some_partial.html.erb
et même dans another_partial_again.html.erb
. Cependant, la variable foo est inaccessible dans another_partial.html.erb
même si je explicitement passé dans l'appel rendu.
Qu'est-ce qui se passe ici?
Merci pour l'aide.
La solution 2
Résolu. Avère que je me rends également la même partielle du contrôleur sans envoyer les variables locales appropriées. Merci !!! de toute façon
Autres conseils
J'ai eu l'erreur de undefined local variable or method
venir pour moi aussi quand je le rendu d'une partielle avec :locals
défini.
Cependant, j'ai eu un autre problème causant mon problème, donc je pensais que je voudrais partager ma solution dans le cas où il aide quelqu'un d'autre. (Cette page a été le premier résultat quand je googlé cette erreur après tout)
En gros, juste assurez-vous d'utiliser :partial => 'path/to/partial'
dans votre appel à render
.
i.e..
<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %>
pas comme si je faisais:
<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %>
facile pour un rail / débutant rubis comme moi manquer.
tombai sur cette ancienne cause question que je fait face à la même question. Tourné que Rails 4+ si vous n'utilisez pas des collections ou la mise en page de manière correcte est:
# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>
Comme documenté