Rails locaux partiels non persistants lorsqu'ils sont envoyés à une autre partie comme son propre locale

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

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.

Était-ce utile?

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é

scroll top