2009-03-26 6 views
1

retourne toujours vrai et effacer le tableau entierbloc retourne toujours vrai

<% users.delete_if do |user| %> 
    <% false %> 
<% end %> 

D'autre part

<% 
users.delete_if do |user| 
    false 
end 
%> 

fonctionne et ne supprime pas le tableau. Puis-je en quelque sorte utiliser l'instruction delete_if dans ma vue et être toujours en mesure d'insérer html?

Merci

Répondre

6

Vous ne devriez pas être en train de modifier les données du tout dans votre point de vue - le faire dans votre place contrôleur ou modèle. Utilisez les vues uniquement pour refléter l'état actuel de votre base de données, ne le modifiez pas.

Si vous utilisez ensuite la deuxième version de votre code dans l'un de ces endroits, ce problème disparaîtra.

1

Je pense, et je devrais le tester si vous utilisez "rendement" dans la première forme, cela va fonctionner. Mais, comme le dit le premier auteur, vous ne devez pas modifier les données d'une vue.

2

Ignorant les effets secondaires en un point de vue aspect, ici est pourquoi le bloc « renvoie » une valeur: il y a une déclaration d'impression généré dans le cadre du modèle ERB code généré entre le « %> » et le "<% end". Toute valeur laissée par ce code généré sera utilisée comme expression/expression finale dans le bloc, et donc sa valeur.

Questions connexes