0

我有一个模型,我想在两列中显示文章。看起来 each_slice 会拆分数组,但我不确定如何应用它。当我尝试each_slice在我的视图中使用时,我无法让它工作。

在我的控制器中:

@articles = Article.order("title ASC")

在我看来,我想替换:

<% @articles.each do |article| %>

有了这个:

<% @articles.each_slice((@articles.size/2.0).ceil) { |slice| puts slice } if @articles.size > 0 do |article| %>

使用此答案中的代码: RoR show elements in two columns

我正在尝试制作两列文章标题,其中前半部分位于第 1 列,而后半部分位于第 2 列(按标题字母顺序排序)。有人可以帮我理解我做错了什么吗?

4

1 回答 1

0

目前尚不清楚您是要尝试在输出中的两个可视列中显示文章的单个实例,还是在两列中显示文章实例的列表。您的代码将指示后者,但您的文本指示前者。

假设是后者,您不应该使用表格来显示非表格数据,特别是如果您打算将两列用于相同的数据。而是使用有序列表和适当的 CSS 来处理跨两列的显示,这可以根据您的需要以多种方式处理(具有固定宽度和固定容器宽度的内联块元素将是一种非常友好的方法) .

如果您确实需要使用 n 进行迭代,each_slice则需要检查文档,each_slice这样您就不会像在这里一样将错误的参数传递给它。您似乎希望将文章数组按顺序分成两列(即它们以 1 和 2 水平对齐的方式出现),因此您只需调用@articles.each_slice(2) { |(article_a, article_b)| article_a.name, article_b.name }.

链接的答案以您的标记无法处理的方式拆分数据,提供两个未指定长度的数组,基本上分成两半。然后,您将遍历每个结果列表以显示它们,可能在单独的包含元素中。

于 2013-04-04T20:02:07.387 回答