2017-08-29 3 views
1

Ich verwende Geprüftes Juwel, um die Änderungen zu verfolgen, die auf Benutzern getan werden. Was ich genau anzeigen möchte, sind die Änderungen, die die Audits mit der Zeit gemacht haben, in der sie in derselben Zeile aktualisiert werden. Ich habe versucht, es so anzuzeigen, aber es macht Wiederholungen.Rails: Wie man auf zwei Modelle in einer einzelnen Schleife zugreift

<% @users.each do |user| %> 
    <% user.audits.each do |audit| %> 
    <% if audit.action != "create" %> 
    <% user.revisions.each do |revision| %> 
    <tr class="list-item"> 
     <td> 
     <%= user.role %> 
     </td> 

     <td> 
     <%= audit.action %> 
     </td> 

     <td> 
     <%= audit.audited_changes %> 
     </td> 

     <td> 
     <%= revision.created_at %> 
     </td> 

     <td> 
     <%= revision.updated_at %> 
     </td> 
    </tr> 
     <% end %> 
    <% end %> 
    <% end %> 
<% end %> 

Was ich will, ist in der Lage, sie ohne eine einzige Änderung anzeigen mehrmals anzuzeigen.

Ich suche nach einem Ausdruck wie

for(i=5,j=3;j<5;i++,j++){ 
    .... 
} 

in Schienen, die eine Wiederholung zu vermeiden. Danke

Antwort

0

Ich löste es so, da beide Audits und Revision gleiche Anzahl von Elementen hat. Ich hoffe, es hilft für die anderen.

<% @users.each do |user| %> 
     <% user.audits.each_with_index do |audit, i| %> 
     <% if audit.action != "create" %> 
     <% user.revisions[i] %> 
     <tr class="list-item"> 
      <td> 
      <%= user.role %> 
      </td> 

      <td> 
      <%= audit.action %> 
      </td> 

      <td> 
      <%= audit.audited_changes %> 
      </td> 

      <td> 
      <%=user.revisions[i].created_at %> 
      </td> 

      <td> 
      <%= user.revisions[i].updated_at %> 
      </td> 
     </tr> 
     <% end %> 
     <% end %> 
    <% end %> 
0

Sie könnten auch zip versuchen:

user.audits.zip(user.revisions) do |audit, revision| 
Verwandte Themen