提问者:小点点

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


我正试着把一套牌分成三行。 当前集合大小为8。 所以它应该渲染成3行,前两行填满3张牌,最后一行有2张牌。

目前我可以将8个对象渲染成3行。 但是,它不是在前一行下创建行,而是在当前行内创建新的行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="..." alt="Card image cap">
                    <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="..." alt="Card image cap">
                    <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 %>

如果我有任何错误,请纠正我。