2017-08-29 33 views
1

私はAudited gemを使用して、ユーザーに対して行われた変更を追跡しています。私が正確に表示したいのは、同じ行の中で更新された時の監査である変更です。このように表示しようとしましたが、繰り返しを行います。Rails:1つのループで2つのモデルにアクセスする方法

<% @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 %> 

私が望むのは、1回の変更を何度も表示しないで表示することです。

私は繰り返しを避けるために、レール内

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

のような表現を探しています。ありがとうございました

答えて

0

私は監査と改訂の両方が同じ数の要素を持っているので、この方法で解決しました。

<% @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

またzip試みることができる:

user.audits.zip(user.revisions) do |audit, revision| 
関連する問題