Ruby on rails 除了rails中的每种方法,还有其他方法可以浏览结果吗?
首先,rails中的@books或@planes(来自select(:all))是什么?它是一个数组吗?名单?它是怎么命名的?关于布局和渲染的官方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 %> <
<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
的语法,这可能会更好地解释它。