根据集合的大小动态添加行

Posted

技术标签:

【中文标题】根据集合的大小动态添加行【英文标题】:Dynamically add rows based on size of collection 【发布时间】:2020-11-24 16:18:31 【问题描述】:

我正在尝试将一组卡片渲染为 3 行。目前集合大小为 8。所以它应该渲染为 3 行,前两行填充 3 张卡片,最后一行有 2 张卡片。

目前我可以将 8 个对象渲染成 3 行。但是,它不是在前一行下创建一行,而是在当前行内创建新的row div ,从而使布局不合时宜。

我认为结束 div 语句的条件给我带来了问题。

呈现卡片的代码:

    <% @count = 0 %>
    <% @col_count = 0%>
    <div class="card-group">
        <% @user.articles.each do |article| %>
            <% if @count == 3 %>
                <% @count = 0%>
            <% end %>

            <% if @count == 0 %>
                <div class="row">
            <% end %>
            
                <div class="card col-4">
                    <img class="card-img-top" src="..." >
                    <div class="card-body">
                        <h5 class="card-title">Test Card</h5>
                        <p class="card-text">This is a placeholder card.</p>
                    </div>           
                </div>
            
            <% if @count == 0 && @col_count == 2 %>            
                </div>
                <% @col_count = 0 %>
            <% end %>

            <% @count = @count + 1 %>
            <% @col_count = @col_count + 1 %>
        <% end %>
    </div>    

感谢任何帮助。

【问题讨论】:

【参考方案1】:

我认为如果你改用each_slice 会更好,它应该看起来像这样:

        <% @user.articles.each_slice(3) do |articles| %>
            <div class="row">
            <% articles.each do |article| %>
            
                <div class="card col-4">
                    <img class="card-img-top" src="..." >
                    <div class="card-body">
                        <h5 class="card-title">Test Card</h5>
                        <p class="card-text">This is a placeholder card.</p>
                    </div>           
                </div>
            <% end %>
            </div>
        <% end %>

如有错误请指正。

【讨论】:

感谢您的成功。不知道你能做到。

以上是关于根据集合的大小动态添加行的主要内容,如果未能解决你的问题,请参考以下文章

jQuery动态添加行和根据已有数据动态添加行

我们如何使用javascript根据表格中的第一行元素动态添加行?

根据Android中的屏幕尺寸动态添加视图[关闭]

动态添加文本后Textview不调整大小?

jQuery DataTables:如何为每个动态添加的行添加行 ID?

在 JavaFX 中将元素动态添加到固定大小的 GridPane