【问题标题】:Dynamically divide array in several columns将数组动态划分为几列
【发布时间】:2010-12-29 13:10:37
【问题描述】:

我在 Ruby on Rails 2.3.8 中工作,我有一个类别的集合。因此,我想将它们列在每行三列中,以 10 组为一组,并根据需要设置尽可能多的行。类别的数量可以改变,因此功能应该是动态的。

是否有“rails 方式”来完成此任务?或者哪种方法最好?

【问题讨论】:

    标签: html ruby-on-rails css


    【解决方案1】:

    看看下面的 railscasts 剧集:

    http://railscasts.com/episodes/28-in-groups-of

    “in_groups_of”方法应该正是您所需要的:

    >> [1,2,3,4,5,6,7].in_groups_of(2, false)
    => [[1, 2], [3, 4], [5, 6], [7]]
    

    in_groups_of 的文档可以在以下位置找到:

    http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M001423&name=in_groups_of

    【讨论】:

    • 嗯,这绝对是“rails 方式”:)
    【解决方案2】:

    不知道是不是“rails way”,但肯定是“my way”;)

    # in controller
    @categories = Category.all
    
    # in view
    <table>
      <% @categories.each_with_index do |cat, index| %>
        <%= "<tr>" if index % 30 == 0 %>
        <%= "<td>" if index % 10 == 0 %>
        <%= cat.name %>
        <%= "</td>" if (index + 1) % 10 == 0 || index + 1 == @categories.size %>
        <%= "</tr>" if (index + 1) % 30 == 0 || index + 1 == @categories.size %>
      <% end %>
    </table>
    

    如果您要切换到 Rails 3,则必须在将任何 HTML 标记放入 &lt;%= %&gt; 之前添加 raw

    【讨论】:

    • 谢谢。我会试一试,虽然我不喜欢使用表格。我会改用
        。我觉得逻辑有点变化,但我还是会努力让它发挥作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2017-01-14
    相关资源
    最近更新 更多