10
votes

Rails locaux partiels ne persistant pas lorsqu'il est envoyé à une autre partielle comme son propre local

Je rends une partielle comme: xxx pré>

donc à l'intérieur de _some_parttial.html.erb code> Je rends deux autres partiels comme: p>

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


3 commentaires

Qu'entendez-vous par «inaccessible»? Est-ce qu'il jette une variable locale indéfinie ou une méthode ou est-ce nil ? Pouvez-vous montrer le code qui utilise foo sur ces sous-partielles?


Il jette une variable locale indéfinie


Le code était simple: <% = foo%>


3 Réponses :


3
votes

résolu. S'avère que je rendais également la même partielle du contrôleur sans envoyer les variables locales appropriées. Merci quand même !!!


3 commentaires

En fait, j'ai eu le même problème et ma solution était exactement la même - je l'ai compris quand j'ai vu votre erreur: p


Ugh moi aussi! Ha. J'ai changé mon Haml de: "- Si Myvar" to "- si défini? (Myvar) && myvar"


même ici, passait la partielle à Ajax, a oublié de changer le symbole



41
votes

J'ai eu le une variable locale ou une méthode locale indéfinie non définie code> erreur monte pour moi aussi lorsque je rendu partiel avec : locaux code> défini.

Cependant, j'ai eu un Différent problème qui cause mon problème, alors je pensais que je partagerais ma solution au cas où elle aide toute autre chose. (Cette page a été le premier résultat lorsque j'ai Googled cette erreur après tout) p>

essentiellement simplement que vous utilisez : partielle => "chemin / à / partiel ' code> dans votre appel à rendu code>. p>

Ie p> xxx pré>

pas comme je faisais: p>

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


4 commentaires

+1 @ asgeo1 étrange que vous avez besoin : partiel pour le faire fonctionner, mais cela fonctionne effectivement!


Wow!!! Merci ... Je suis juste en train d'apprendre Ruby et j'étais totalement confus sur cette erreur. J'aimerais pouvoir mod-up plus de points.


Cela a résolu ma question aussi, mais je suis vraiment curieux de savoir pourquoi le Partial: "Nom en partie", locaux: {FOO: "bar"} doit être utilisé. Je comprends que nous sommes en fait rendant une partielle. Ce que je ne comprends pas, c'est comment cela diffère d'une vue.


toujours utile en 2015!



0
votes

heurté dans cette très ancienne question parce que je suis confronté au même problème. Il est avéré que avec des rails 4+ si vous n'utilisez pas de collections ni de mise en page, le bon moyen est le suivant: xxx

comme documenté ici .


0 commentaires