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,以使视图更易于阅读。
在我的 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,以使视图更易于阅读。