RoR在两列中显示元素

时间:2009-11-25 17:27:15

标签: ruby-on-rails arrays split

我如何将模型的元素分成两个大小相等的部分,以便我可以将它们显示在两列中?

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()删除了中间元素。

5 个答案:

答案 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)

查看Array#in_groups_of

这将根据您的喜好将数组切片。

答案 3 :(得分:0)

一种方法是使用jQuery。有几个插件可以为您完成此任务。

随后,在你有两个块之后,开始用第一个组填充一个div,一旦你到达结束,在第二个div中启动第二个组。然后使用css将两个div放在彼此旁边并设置样式。

答案 4 :(得分:0)

你想在哪里展示这些元素?

如果它在视图中,则不应修改模型;您的模型应该与您的演示文稿保持独立。

如果要在网页上显示结果,则必须在视图中使用html和css。即使在您的视图中,您也可能不需要将元素“拆分”为子数组。

例如,请参阅this page。如果你查看源代码,列表总是“一个接一个”,而不是分成组。 CSS调整文本的定位方式。