gpt4 book ai didi

ruby-on-rails - 尽量不要重复 Rails 数据操作

转载 作者:行者123 更新时间:2023-12-03 17:34:55 24 4
gpt4 key购买 nike

我是 Rails 的新手,一般来说是一个中级程序员,但我会尽量讲清楚。

我有一个产品数据库表,它有一个名为类别的字段。 Category 有两个可能的值,分别称为 Category1 和 Category 2。目标是检索所有产品并将它们显示在按类别组织的 HTML 中。我可以做到这一点,但我知道必须有更好的方法。

我现在的方法是这样获取我的产品:

@category1_products = Product.all(conditions: { category: "Category1" })
@category2_products = Product.all(conditions: { category: "Category2" })

然后像这样输出数据:

<table>
<tr>
<td>Category1 Name</td>
<% @category1_products.each do |product| %>
<td><%= product.name %></td>
<td><%= product.description %></td>
<td><%= product.price %></td>
<% end %>
</tr>
<tr>
<td>Category2 Name</td>
<% @category2_products.each do |product| %>
<td><%= product.name %></td>
<td><%= product.description %></td>
<td><%= product.price %></td>
<% end %>
</tr>
</table>

我想使用一个实例来完成此操作:一次获取所有产品,按类别对它们进行分组,然后通过一次循环一个类别(包括类别名称)来输出它们。这对我来说似乎是一个非常基本的概念,但我很难理解它。

最佳答案

@products_by_category = Product.all.group_by(&:category)

这是一个 Ruby(阅读:不是 ActiveRecord)方法,可以根据数组包含的对象的某些条件将数组转换为哈希。

在您看来(假设您希望每个产品 一行,而不是每个类别):

<table>
<% @products_by_category.each do |category,products| %>
<tr>
<th><%= category %></th>
</tr>
<% products.each do |product| %>
<tr>
<td><%= product.name %></td>
<td><%= product.description %></td>
<td><%= product.price %></td>
</tr>
<% end %>
<% end %>
</table>

关于ruby-on-rails - 尽量不要重复 Rails 数据操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com