使用带有Rails视图的Each_Slice

时间:2013-04-04 19:48:03

标签: ruby-on-rails ruby

我有一个模型,文章我想在两列中显示。看起来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列(按标题按字母顺序排序)。有人可以帮我理解我做错了吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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