Было бы проще разложить их по строкам, а не по столбцам, потому что вы могли бы использовать each_slice:
<% Interest.find(:all).each_slice(8) do |interest_row| %>
<tr>
<% interest_row.each do |interest| %>
<td>
<%= check_box_tag Blah Blah Blah %>
<%= interest.name %>
</td>
<% end %>
</tr>
<% end %>
но если вам нужно их в главном порядке столбца, вы можете сделать
interest_columns = Interest.find(:all).in_groups_of(15)
interest_rows = interest_columns[0].zip(*interest_columns[1..-1]).map(&:compact)
, а затем сделайте тот же двойной цикл для интереса_rows