Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails (Ruby on Rails)将帖子分成3组显示_Ruby On Rails - Fatal编程技术网

Ruby on rails (Ruby on Rails)将帖子分成3组显示

Ruby on rails (Ruby on Rails)将帖子分成3组显示,ruby-on-rails,Ruby On Rails,我使用以下代码向我的用户显示帖子 _feed.html.erb部分: <% @posts_by_month.each do |monthname, posts| %> <%= monthname %> <ul> <% posts.each do |post| %> <li><%= post.created_at %></li> <% end %> </ul> <

我使用以下代码向我的用户显示帖子

_feed.html.erb部分:

<% @posts_by_month.each do |monthname, posts| %>
<%= monthname %>
<ul>
   <% posts.each do |post| %>
     <li><%= post.created_at %></li>
   <% end %>
</ul>
<% end %>
这使得我的帖子如下:

Post 1
Post 2
Post 3
Post 4
我想更改它,使帖子显示为:

Post 1         Post 2       Post 3
Post 4         etc          etc
etc
我已经尝试了几种方法,包括in_groups_of(3)方法,但是当前的设置方式意味着没有任何效果。我觉得有一个明显的解决办法我错过了-有人能帮我吗

[编辑以展开(3)个错误的组内错误]

如果我将_feed部分中的第4行更改为:

<% posts.in_groups_of(3, false).each do |post| %>

它给出了错误:未定义的方法'created_at'for#
方法的
#in_groups_of
返回一个数组,每个数组包含3个Post对象。 因此,您现在还需要迭代包含三篇文章的返回数组,如:

<% posts.in_groups_of(3, false).each do |post_group| %>
   <% post_group.each do |post| %>
     <li><%= post.created_at %></li>
   <% end %>
<% end %>

  • 您可以使用gem。这通过
    方法提供和
    每个_。您可以使用
    each_by
    创建组并进一步迭代这些组

    下面是关于如何使用
    每个\u的代码片段

    <div class = "small-9 columns vertical-border-left">
        <%- @client.contact_details.each_by(3) do |contact_details| %>
          <div class="row">
            <%- contact_details.each do |contact| %>
                <div class="small-3 columns small">
                  <div> <%= contact.contact_detail_type %> contact </div>
                  <div> <%= contact.contact_email %> </div>
                  <div> <%= contact.contact_phone %> </div>
                </div>
            <% end %>
          </div>
        <% end %> 
    </div>
    
    
    接触
    
    您好,谢谢您的回答。然而,当我将上述代码插入到feed部分时,逻辑是有意义的,每个帖子仍然显示在自己的行上,而不是我希望的每行3个。您知道为什么会发生这种情况吗?之所以会发生这种情况,是因为您正在使用默认情况下始终垂直的
    • 标记来解决需要修改html/css的问题。谢谢!关于如何修改html/css以获得我想要的行为,您有什么建议吗?或者使用
      • 标记的替代方法?我建议看一下使用flexbox:这是一些flexbox basic的链接,许多现代CSS框架将其用于列类等。因此我认为这是一个很好的方法。
        <div class = "small-9 columns vertical-border-left">
            <%- @client.contact_details.each_by(3) do |contact_details| %>
              <div class="row">
                <%- contact_details.each do |contact| %>
                    <div class="small-3 columns small">
                      <div> <%= contact.contact_detail_type %> contact </div>
                      <div> <%= contact.contact_email %> </div>
                      <div> <%= contact.contact_phone %> </div>
                    </div>
                <% end %>
              </div>
            <% end %> 
        </div>