【问题标题】:Rails: How to access two models in a single loopRails:如何在一个循环中访问两个模型
【发布时间】:2018-02-06 23:30:21
【问题描述】:

我正在使用 Audited gem 来跟踪对用户所做的更改。我想要准确显示的是所做的更改,即审核与它们在同一行中更新的时间。我试图以这种方式显示它,但它会重复。

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

我想要的是能够在不显示单个更改多次的情况下显示它们。

我正在寻找像

这样的表达方式
for(i=5,j=3;j<5;i++,j++){
     ....
}

在rails中,避免重复。谢谢你

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 erb acts-as-audited


    【解决方案1】:

    我以这种方式解决了它,因为审计和修订具有相同数量的元素。我希望它对其他人有所帮助。

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

    【讨论】:

      【解决方案2】:

      你也可以试试zip

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-29
        • 1970-01-01
        • 1970-01-01
        • 2017-10-11
        相关资源
        最近更新 更多