Ruby on Rails - 从符合条件的数组中获取前 n 个元素

Ruby on Rails - Get first n number of elements from array with condition

在我的 Rails 视图模板中,@comments 是一个哈希数组。我只需要显示满足此条件的前三个评论 <% if post["id"] === comment["postId"] %>。现在它正在显示所有这些。

 <tbody>
            <% @posts.each do |post| %>
                <tr>
                    <% @users.each do |user| %>
                            <% if post["userId"] === user["id"] %>
                                <td> <%= user["name"]  %></td>
                            <% end %>
                        <% end %>
                        <td><%= post["title"]  %></td>
                        <td><%= post["body"]  %></td>
                        <% comments_total = 0 %>
                        <% @comments.each do |comment| %>
                            <% if post["id"] === comment["postId"] %>
                                <td><%= comment["body"] %></td>
                                <% comments_total += 1 %>
                            <% end %>
                        <% end %>
                        <td><%= comments_total %></td>
                    <% end %>
                                
                </tr>
        </tbody>

如果您只想显示符合特定条件的前 3 条评论,那么我会这样做:

<% matching_comments = @comments.select { |comment| comment["postId"] == post["id"] } %>
<% matching_comments.first(3).each do |comment| %>
  <td><%= comment["body"] %></td>
<% end %>
<td><%= matching_comments.size %></td>

您可以在控制器中加载带有条件的@comments,以使视图更易于阅读。