是否有另一种方法来浏览结果而不是每个在rails中?

时间:2011-08-03 15:29:14

标签: ruby-on-rails arrays list

首先,rails中的@books或@planes(来自select(:all))是什么?它是一个阵列吗?一个列表?怎么命名?关于布局和渲染的官方rails指南从未命名过它。

其次,是否有另一种方式来浏览它而不是每个方法?我有一个特定的案例,我需要“手动”浏览结果,我该怎么做?

编辑:

我想这样做:

    <table>
    <% 3.times do %>
    <tr>
      <% 4.times do %>
        <td>
          <%if collection= @collections.next%>
              <%=  collection.main_image.url(:vignette) %>
          <%end%>
        </td>
      <%end%>
    </tr>
    <%end%>
  </table>

它应该显示12个(不同)集合图片的数组。即使结果中没有12个条目,也会完成数组。

if collection= @collections.next同时测试下一个条目并分配它。当然它不起作用。

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

<%- array = (1..12).to_a %>

<table>
  <%- array.zip(@collections).each_slice(4) do |collections| %>
    <tr>
    <%- collections.each do |number, collection| %>
      <td><%= collection.main_image.url(:vignette) unless collection.blank? %></td>
    <%- end %>
    </tr>
  <%- end %>
</table>

答案 1 :(得分:1)

使用each_slice。这样,您可以按行对项目进行分组(如果这是您正在尝试的内容):

collections = (1..20).to_a

collections.each_slice(4) { |collection|
  puts "----------------"
  puts collection.join(" | ")
}

输出:

----------------
1 | 2 | 3 | 4
----------------
5 | 6 | 7 | 8
----------------
9 | 10 | 11 | 12
----------------
13 | 14 | 15 | 16
----------------
17 | 18 | 19 | 20