首先,我强烈建议您在块中使用两个变量。当您使用一个变量时, group_by 将变量设置为应设置为两个变量的一对值的数组。这将比使用 [1] 为组索引对更清晰的代码。
一种方法是该对的第一部分将是 id,因此您可以进行查找。
<% @products.group_by(&:product_group_id).each do |product_group_id, products|%>
<!--need to get group name here -->
<%= ProductGroup.find(product_group_id).name %>
<% products.each do |product|%>
<%= product.product_name%>
<br>
<% end %>
<% end %>
另一种方法是,由于您在组中至少有一个产品的数组,您可以在数组的第一个元素上调用 product_group 关联。
<% @products.group_by(&:product_group_id).each do |product_group_id, products|%>
<!--need to get group name here -->
<%= products[0].product_group.name %>
<% products.each do |product|%>
<%= product.product_name%>
<br>
<% end %>
<% end %>
您还可以将名称委派给产品组。
class Product
belongs_to :product_group
delegate :name, :to => :product_group, :prefix => true, :allow_nil => true
end
<%= products[0].product_group_name %>