2010-04-19 8 views
0

J'essayais d'afficher un grand nombre de cases à cocher dans mon application rails et ne connaissais pas la syntaxe pour afficher 15 lignes puis après le démarrage d'une nouvelle colonne.Afficher un grand ensemble de données dans une table/Démarrer une nouvelle colonne après X lignes

J'ai un modèle avec environ 120 entrées. À l'heure actuelle, je l'ai affiché dans la vue comme ....

<% for interest in Interest.find(:all) %> 
<%= check_box_tag Blah Blah Blah %> 
<%= interest.name %> 
<% end %> 

Comment puis-je faire en sorte qu'il fait une table et après toutes les 15 ou si les lignes font une nouvelle colonne?

Répondre

1

Il serait plus facile de les mettre en ligne, au lieu de colonnes, parce que vous pouvez utiliser each_slice:

<% Interest.find(:all).each_slice(8) do |interest_row| %> 
    <tr> 
    <% interest_row.each do |interest| %> 
     <td> 
     <%= check_box_tag Blah Blah Blah %> 
     <%= interest.name %> 
     </td> 
    <% end %> 
    </tr> 
<% end %> 

mais si vous devez les dans l'ordre des colonnes-major, vous pouvez faire

interest_columns = Interest.find(:all).in_groups_of(15) 
interest_rows = interest_columns[0].zip(*interest_columns[1..-1]).map(&:compact) 

puis faites la même double boucle sur les lignes d'intérêt

Questions connexes