Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试将一个数组分成三个不均匀的数组(Ruby on Rails)_Ruby_Arrays - Fatal编程技术网

尝试将一个数组分成三个不均匀的数组(Ruby on Rails)

尝试将一个数组分成三个不均匀的数组(Ruby on Rails),ruby,arrays,Ruby,Arrays,下面的代码将生成一个包含13页标题的数组(我相信这是一个数组)。我想有标题0-5在自己的分区,6-8在第二个分区和9-12在第三个分区,为下拉菜单。我在这里找不到这个确切的问题/答案 <% @cms_site.pages.root.children.published.each. do |page| %> <%= link_to page.label, page.full_path %> <% end %> 谢谢大家! 你尝试了什么#每个在这种情况下

下面的代码将生成一个包含13页标题的数组(我相信这是一个数组)。我想有标题0-5在自己的分区,6-8在第二个分区和9-12在第三个分区,为下拉菜单。我在这里找不到这个确切的问题/答案

<% @cms_site.pages.root.children.published.each. do |page| %>
  <%= link_to page.label, page.full_path %>
<% end %>


谢谢大家!

你尝试了什么
#每个
在这种情况下都不是很好的用途。您可能希望将其分成3个不同的循环,如下所示:

<% @cms_site.pages.root.children.published[0,5].each do |page| %>
  <%= link_to page.label, page.full_path %>
<% end %>

<% @cms_site.pages.root.children.published[6,8].each do |page| %>
  <%= link_to page.label, page.full_path %>
<% end %>

<% @cms_site.pages.root.children.published[9,12].each do |page| %>
  <%= link_to page.label, page.full_path %>
<% end %>

编辑 看起来你有一些逻辑问题,至少你应该先尝试一下


上面的代码应该可以工作,但它并不是很枯燥,可以提取到一个助手方法中,该方法使用迭代器的章节,或者可能使用不同的迭代器(例如
每个带有_index的
),并处理块中每个索引的检查。按照你的要求去做有很多方法

基本上,如果您处理的是一个数组,并且每次都要从中提取完全相同的元素,下面介绍如何对其进行切片:

# Your Array
elements = [1,2,3,4,5,6,7,8,9,10,11,12]

# This will give you three arrays inside one array. The first will be first six
# elements starting from 0, the second is 3 elements starting from 6, etc.
arrays = [ elements[0,6], elements[6,3], elements[9,3] ]
现在,您可以遍历数组并重用代码来生成所需的代码

arrays.each do |ar|
  # Now render for each array as you please, and reuse the same code.
end

但是,这取决于您想要中断的逻辑。如果您总是希望以这种方式中断,您可以在您关心的阵列的每个部分上执行3个不同的循环。如果您能够描述a)您为什么要中断,以及b)导致您选择这些范围的逻辑是什么,这将对回答者和未来的访问者都有帮助。为什么?因为有13页选择的下拉菜单对读者来说太多了!13页在逻辑上分为三类,因为它们属于相同的一般类别。有三个带说明的按钮更整洁,我喜欢它的外观。谢谢。那么,为什么这些选择在同一个数组中按索引分组,而不是按其他一些辅助条件分组,而这些辅助条件可以用于
groupby
调用?这确实有效!我把[]放在了.后面,而不是前面!愚蠢的错误。多谢。现在我要试着让它在一个助手里更干。