基于in_groups_of

时间:2018-05-19 10:59:18

标签: ruby-on-rails

以下内容旨在将数组项分配到两列中。

<% @entitiquestions.in_groups_of(2, false) do |entitiquestions| %>
  <tr>
    <% entitiquestions.each do |entitiquestion| %>
      <td>
        <span data-tooltip class="hint--bottom hint--info" data-hint="<%= entitiquestion.question.query %>">

但是,有一个类应该根据数组项的索引进行设置(如果它实际上是一个索引......)

可以根据这个位置以某种方式设置条件吗?

1 个答案:

答案 0 :(得分:3)

您可以使用each_with_index获取数组项的索引,例如,以下内容将为您提供row_index变量,该变量从第一行的0开始:

<% @entitiquestions.in_groups_of(2, false).each_with_index do |entitiquestions, row_index| %>

同样,您可以使用以下命令获取列索引:

<% entitiquestions.each_with_index do |entitiquestion, column_index| %>

现在,您已拥有表中元素的确切位置,因此您可以使用三元运算符来添加类。例如,如果您想在行甚至可以执行时添加highlight类:

<span data-tooltip class="hint--bottom hint--info <%= 'highlight' if row_index.even? %>"

以下是一个完整的例子:

<table>
  <% @entitiquestions.in_groups_of(2, false).each_with_index do |entitiquestions, row_index| %>
    <tr>
      <% entitiquestions.each_with_index do |entitiquestion, column_index| %>
        <td>
          <span data-tooltip class="hint--bottom hint--info <%= 'highlight' if column_index.even? %>" data-hint="<%= entitiquestion.question.query %>">
            <%= entitiquestion.question.query %>
          </span>
        </td>
      <% end %>
    </tr>
  <% end %>
</table>