2010-07-20 4 views
0

Dans mon fichier .html.erb, j'ai beaucoup de lignes d'informations à afficher. Je suis en train d'accomplir cela avec un simple: (en utilisant blueprint css)La façon Rails de réduire la duplication HTML

<% for event in @user.events %> 
<div class="span-5 border">Descriptor:</div> <div class="span-5 last"><%=h event.foo%></div><br/> 
<% end %> 

Comment puis-je faire pour que je puisse appeler une fonction qui rendrait la partie de l'information et je passerais juste le descripteur (une chaîne littérale) et la méthode pour event ("foo" dans ce cas).

Je suis nouveau sur les rails et je pense que cela pourrait être accompli en utilisant un rendu partiel, mais je ne suis pas entièrement sûr.

Merci

Répondre

1
render :partial => 'event', :collection => @user.events, :locals => {:descriptor => 'descriptor', :method => 'foo'} 

Si vous utilisez une version récente de rails cette version abrégée travaillera également:

render @user.events, :locals => {:descriptor => 'descriptor', :method => 'foo'} 

Dans votre partielle

<div class="span-5 border"><%= descriptor -%></div> <div class="span-5 last"><%=h event.send(method) %></div><br/> 
+0

Que serait le _event.erb ressembler? – Reti

+0

Salut Reti. Désolé pour une description incomplète, j'ai édité la réponse. Cela devrait fonctionner mais faites le moi savoir si ce n'est pas le cas. – mark

+0

Merci pour l'aide jusqu'à présent. Je mets '<% = render @ user.events,: locals => {: descripteur => 'descripteur',: méthode => 'foo'}%>' sous le '<% pour événement dans @ user.events%> 'et le partial que vous avez dit au bon endroit, mais maintenant il dit 'descriptor' est indéfini. J'ai également essayé l'autre rendu que vous avez fourni, mais il dit que l'événement est indéfini. Que se passe-t-il? – Reti

0

Vous pouvez utiliser partials . Son avantage qu'il fait code DRY.Aussi vous pouvez remplacer le div particulier par rappel Ajax. Save the préfixe avec partials '_' sur le nom du fichier comme _test.rhtml

render :partial => 'test', :layout => false 
Questions connexes