Ruby on rails 除了rails中的每种方法,还有其他方法可以浏览结果吗?

Ruby on rails 除了rails中的每种方法,还有其他方法可以浏览结果吗?,ruby-on-rails,arrays,list,Ruby On Rails,Arrays,List,首先,rails中的@books或@planes(来自select(:all))是什么?它是一个数组吗?名单?它是怎么命名的?关于布局和渲染的官方rails指南从未对其进行命名 第二,有没有其他方法可以浏览它?我有一个特殊的案例,我需要“手动”浏览结果,我如何才能做到这一点 编辑: 我想这样做: <table> <% 3.times do %> <tr> <% 4.times do %> <

首先,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个条目,数组也已完成


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

使用
每个片段。通过这种方式,您可以按行对项目进行分组(如果您正尝试这样做):

输出:

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

使用
每个\u片
。通过这种方式,您可以按行对项目进行分组(如果您正尝试这样做):

输出:

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

您可以在以下行中执行某些操作:

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

您可以通过以下几行操作:

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


如果执行.each,则可以显示collection.name。一个数组的列数和我收集的列数一样多。当我用每个_片(4)替换它时,rails说:未定义的方法“name”用于#你确定每个_片都能产生结果吗?@Sylario-你应该使用
irb
来处理这样的东西。你会进步得更快
每个_切片
将一个数组分组为一组切片大小的数组。因此,在
每个_slice
循环中,您将获得一个对象数组,这些对象的大小与您选择的切片相同。然后你循环通过它们。在
irb
中稍微玩一下。使用
放置
检查
,您很快就会明白。例如,在
irb
中尝试以下操作:
put(1..20)。每个_片(4){a | put a.inspect}
。现在你知道它的作用了
irb
是您最好的朋友。如果我做了一个.each,我可以显示collection.name。一个数组的列数和我收集的列数一样多。当我用每个_片(4)替换它时,rails说:未定义的方法“name”用于#你确定每个_片都能产生结果吗?@Sylario-你应该使用
irb
来处理这样的东西。你会进步得更快
每个_切片
将一个数组分组为一组切片大小的数组。因此,在
每个_slice
循环中,您将获得一个对象数组,这些对象的大小与您选择的切片相同。然后你循环通过它们。在
irb
中稍微玩一下。使用
放置
检查
,您很快就会明白。例如,在
irb
中尝试以下操作:
put(1..20)。每个_片(4){a | put a.inspect}
。现在你知道它的作用了
irb
是你最好的朋友。它工作得很好!但我并不真正理解这段代码。这是ruby语法还是rails语法?看看
数组#zip
的语法,这可能会更好地解释它。它工作得很好!但我并不真正理解这段代码。这是ruby语法还是rails语法?看看
数组#zip
的语法,这可能会更好地解释它。