我如何将模型的元素分成两个大小相等的部分,以便我可以将它们显示在两列中?
i have this:
element 1
element 2
element 3
element 4
element 5
and i want this:
element 1 element 4
element 2 element 5
element 3
遗憾的是, split()
删除了中间元素。
答案 0 :(得分:8)
Array#in_groups_of是核心扩展,仅在Rails中可用。它使用的是each_slice方法。
您可以像这样使用它:
a = ["element 1", "element 2", "element 3", "element 4", "element 5"]
a.each_slice((a.size/2.0).ceil) { |slice| puts slice } if a.size > 0
会给你
["element 1", "element 2", "element 3"]
["element 4", "element 5"]
请注意,您必须检查 a.size 是否大于0,否则由于切片大小无效,您将收到ArgumentError异常。
答案 1 :(得分:2)
因为我只需要在rails中使用它,这对我有用:
>> a = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
>> a.in_groups_of( (a.size/2.0).ceil, false ) if a.size > 0
=> [[1, 2, 3], [4, 5]]
答案 2 :(得分:1)
这将根据您的喜好将数组切片。
答案 3 :(得分:0)
一种方法是使用jQuery。有几个插件可以为您完成此任务。
随后,在你有两个块之后,开始用第一个组填充一个div,一旦你到达结束,在第二个div中启动第二个组。然后使用css将两个div放在彼此旁边并设置样式。
答案 4 :(得分:0)
你想在哪里展示这些元素?
如果它在视图中,则不应修改模型;您的模型应该与您的演示文稿保持独立。
如果要在网页上显示结果,则必须在视图中使用html和css。即使在您的视图中,您也可能不需要将元素“拆分”为子数组。
例如,请参阅this page。如果你查看源代码,列表总是“一个接一个”,而不是分成组。 CSS调整文本的定位方式。