Comme d'habitude on vient me demander de changer des choses sur les interfaces au travail, comme d'habitude je cherche le compromis entre Ergonomie / Performance / Fainéantise.
J'avais une liste d'utilisateurs, je boucle donc sur ceux-ci et j'affiche des stats en bas de la liste (là c'est la Fainéantise qui prend le pas, et puis les performances un peu car sinon il aurait fallu faire une deuxième boucle)...). On revient me voir pour le dire c'est cool mais c'est mieux en haut. Là je me dis c'était à prevoir, comment faire ? C'est là qu'intervient content_for (enfin non en fait lisez la suite...). Il m'arrive de l'utiliser pour dire à ma vue d'envoyer des données dans le layout donc je me suis dit que ça marcherait aussi comme ça !
Voici un exemple :
<%= yield(:mazone) %> <p>PARAGRAPHE</p> <% content_for :mazone do %> <p>Ceci est un paragraphe au dessus de PARAGRAPHE</p> <% end %>
Bon c'est pas la peine d'essayer ça ne marche pas ! On ne peux pas utiliser content_for dans la même vue / page. En fait la solution consiste à utiliser capture (c'est un helper de rails) : voici donc comment faire :
<% @paragraphe = capture do %> <p>PARAGRAPHE</p> <% end %> <p>Ceci est un paragraphe au dessus de PARAGRAPHE</p> <%= @paragraphe %>
Ca fonctionne à l'envers de ce que je voulais faire mais le résultat est là !