【发布时间】:2021-12-15 09:12:03
【问题描述】:
在我的 Rails 视图模板中,@cmets 是一个哈希数组。我只需要显示满足此条件的前三个 cmets 。现在它正在显示所有这些。
<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>
【问题讨论】:
-
您可能想要跟踪您渲染了多少,然后在三个之后停止。切线相关:在到达视图层之前完成大部分工作可能会更好;它将允许您仅获取实际需要显示的 cmets 数量和总数,使用快速 DB 查询而不是迭代 all cmets,此处似乎与帖子无关有问题。
-
换句话说,Rails 给了你相当多的魔法——好好利用它。
-
感谢您的回答。您将如何从不同的 API edpoint 获取数据并将它们关联起来?我正在获取三个不同的端点(用户、帖子、cmets),例如,我必须显示所有用户及其最后三个帖子和他们的 cmets。同样,拥有来自外部 API 的所有数据。我真的可以使用一些帮助知道如何。
-
哦,那是另一回事——如果不了解 API,就无法知道。希望有一种机制不仅可以获取所有内容,也可以使用关系信息获取相关数据。
标签: ruby-on-rails ruby rubygems ruby-on-rails-5