2013-06-04 6 views
0

J'ai une question très simple mais je veux connaître la façon unique de le faire. J'ai un modèle appelé Employee et je fais une requête db pour rechercher des utilisateurs actifs en faisantAjouter un numéro de série dans mon tableau

Employee.where(:status => "active") 

Maintenant, je dois montrer tout cela dans une table. Tout fonctionne bien, mais je veux sérialiser chaque valeur, donc j'utilisais id jusqu'à présent, mais quand je fais la requête

@id = Employee.where(:status => "active").collect{|a| a.id} 

à db je reçois id est comme ça [2, 3, 4, 5, 8, 29, 30] mais je préfère vouloir [1,2, 3,4,5,6, ...].

S'il vous plaît aider à gérer cela dans mon fichier de vue où j'ajoute les numéros de série de ma table.

Répondre

2

Dans votre contrôleur/modèle

@employees = Employee.where(:status => "active") 

À votre avis

@employees.each_with_index do |emp,i| 
# emp holds your employee object and i will hold the serial number which you can display 
end 
+0

'@employees.each_with_index do | emp, i | met i sauf si i == 0 end' Cela a bien fonctionné pour moi. Merci –

0

recherchez-vous cette ?:

@employee = Employee.where(:status => "active").order('id ASC') 

@ids = [] 
@employee.each do |emp| 
    @ids << emp.id 
end 
+0

Vous avez déclaré une variable locale comme emp et utilisé @ emp.id. –

+1

oh, désolé. C'est mon erreur. Juste mis à jour ma réponse. :) – rony36

+0

Merci mais j'ai essayé une autre méthode et ça marche très bien pour moi. –

0

Vous pouvez créer une variable locale et incrémenter dans la boucle. Ou dans ce cas où les IDs sont uniques, vous pouvez faire

@ids = Employee.where(:status => "active").collect(&:id) 

<table> 
    <th> Sl no </th> 
    <th> employee id </th> 
    <% @ids.each do |id| %> 
    <tr> 
     <td> 
     <%= @ids.index(id) + 1 %> 
     </td> 
    </tr> 
    <tr> 
    <td> 
     <%= id %> 
    </td> 
    </tr> 
    <% end %> 
</table> 
Questions connexes