2013-03-07 4 views
1

J'ai le code suivant dans un modèle ERB:Variable locale dans la boucle

<% ['foo', 'bar'].each do |var| %> 
    <%= previous %> 
    <% previous = "#{var}" %> 
<% end %> 

je me attends à la sortie foo, mais il sort rien, previous est toujours nil. previous n'est pas défini en dehors de la boucle, la première affectation se produit après la fin de la première boucle.

Voilà comment je suis rendu le modèle:

f.write ERB.new(File.read(node)).result(namespace.instance_eval { binding }) 

Qu'est-ce que je fais mal?

Répondre

1

essayer cette

<% previous = "" %> 
<% ['foo', 'bar'].each do |var| %> 
    <%= previous %> 
    <% previous = var %> 
<% end %> 
+0

qui a résolu, merci! –

+0

Vous avez eu un problème de portée et le problème que vous avez rencontré était un bug de syntaxe –

Questions connexes